وصله (یونیکس)

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از وصله (يونيكس))
وصله
مخزن

ابزار کامپیوتر وصله یک برنامه یونیکس است که های متنی را طبق دستورالعمل های موجود در یک جداگانه ، به نام وصله ، به روز می کند. وصله (که به اختصار وصله نیز نامیده می شود) یک متنی است که از لیستی از تفاوت ها تشکیل شده است و با اجرای برنامه diff مربوط به همراه اصلی و به روز شده به عنوان آرگومان، تولید می شود. به روزرسانی پرونده ها با وصله اغلب به عنوان اعمال وصله یا به سادگی وصله ها گفته می شود.

تاریخچه[ویرایش]

برنامه اصلی وصله توسط لری وال (کسی که با ایجاد زبان برنامه نویسی Perl ادامه داد ) نوشته شد و در mod.sources [۱] (که بعدا به comp.sources.unix تبدیل شد) در می 1985 ارسال شد. یک نوع برنامه (اما نه تنها نوع برنامه ) [۲] [۳] [۴] بخشی از پروژه GNU است [۵] و توسط FSF نگهداری می شود.

زمینه استفاده[ویرایش]

وصله که توسط یک برنامه نویس برای سایر برنامه نویسان ساخته شده است ، اغلب برای به روزرسانی کد منبع به نسخه جدیدتر استفاده می شود. به همین دلیل ، بسیاری از افراد برای مرتبط سازی وصله ها با کد منبع درآمدند ، در حالی که وصله ها در واقع می توانند برای هر متنی اعمال شوند. پرونده های وصله شده هیچ متن غیر ضروری را جمع نمی کند ، همان چیزی است که برخی از مردم براساس معنای انگلیسی کلمه درک می کنند. وصله به همان میزانی که قابلیت حذف متن را دارد می تواند آن را اضافه کند.

وصله های توصیف شده در اینجا نباید با وصله های باینری اشتباه گرفته شوند ، اگرچه می توانند از نظر مفهومی مشابه باشند ، اما برای به روزرسانی پرونده های باینری متشکل از برنامه به نسخه جدید توزیع می شوند.

وصله هایی در توسعه نرم افزار[ویرایش]

های diff که به عنوان ورودی برای وصله استفاده می شوند ، های متنی قابل خواندن هستند ، به این معنی که آنها می توانند به راحتی توسط انسان قبل از استفاده بررسی یا اصلاح شوند.

علاوه بر برنامه " diff " ، تفاوت ها را می توان توسط برنامه های دیگری مانند Subversion ، CVS ، RCS ، Mercurial و Git نیز تولید کرد

وصله ها جز اجزای اساسی بسیاری از سیستم های کنترل منبع ، از جمله CVS بوده اند .

diff های پیشرفته[ویرایش]

وقتی از diff های پیشرفته تری استفاده می شود ، وصله ها را می توان حتی برای پرونده هایی که در این ضمن اصلاح شده اند اعمال کرد ، به شرطی که این تغییرات با وصله تداخل نداشته باشند. این امر با استفاده از " diff های زمینه ای " و " diff های یکپارچه " (همچنین به عنوان "unidiffs" شناخته می شود) ، که هر تغییر را با زمینه احاطه می کند ، که زمینه، متن بلافاصله قبل و بعد از قسمت تغییر یافته تعریف می شود . سپس وصله می تواند از این زمینه برای تعیین منطقه مورد نظر برای وصله حتی اگر با تغییراتی که قبلاً در پرونده جابجا شده است ، استفاده کند و از شماره خطوط در diff ها به عنوان نقطه شروع استفاده کند. به دلیل این خاصیت ، diff های زمینه ای و یکپارچه نوع ارجح تر وصله ها برای ارسال به بسیاری از پروژه های نرم افزاری است.

ویژگی های فوق diff و وصله را به ویژه برای تبادل اصلاحات در نرم افزار منبع باز محبوب می کند. افراد خارجی می توانند جدیدترین کد منبع موجود را بارگیری کنند ، اصلاحاتی در آن انجام دهند و آنها را به صورت متفاوت برای تیم توسعه ارسال کنند. با استفاده از diff ها ، تیم توسعه این توانایی را دارد که وصله ها را قبل از استفاده به طور موثر بررسی کنند و می تواند آنها را در یک کد جدیدتر از آنچه که توسعه دهنده خارجی به آن دسترسی داشته است ، اعمال کنند.

مثالهای استفاده[ویرایش]

برای ایجاد یک وصله ، می توان دستور زیر را در پوسته اجرا کرد:

$ diff -u oldFile newFile > mods.diff # -u tells diff to output unified diff format

برای اعمال وصله ، می توان دستور زیر را در پوسته اجرا کرد:

$ patch < mods.diff

این به وصله می گوید که تغییرات را درون پرونده های مشخص شده در mods.diff، اعمال می کند.اعمال وصله ها در زیرپوشه ها به آپشن اضافی p number- نیاز دارد ، در صورتی که اگر پوشه پایه درخت منبع در diff وجود داشته باشد ، عدد 1 است و در غیر این صورت 0 است. با گزینه " -R " می توان وصله ها را لغو یا معکوس کرد:

$ patch -R < mods.diff

در برخی موارد که پرونده با نسخه ای که در تناظر آن diff ایجاد شده یکسان نیست ، وصله نمی تواند به صورت تمیز اعمال شود. به عنوان مثال ، اگر در ابتدا خطوط متن درج انجام شود ، شماره خطوط اشاره شده در وصله نادرست خواهد بود.وصله با نگاه کردن به خطوط مجاور برای جابجایی مجدد متن مورد نظر برای وصله می تواند جای جدید را پیدا کند. همچنین با تغییر خطوط زمینه (برای diff های زمینه ای و یکپارچه) بازیابی خواهد شد. این به عنوان فاز توصیف می شود.

انقال های وصله[ویرایش]

در اصل برای سیستم های یونیکس و یونیکس مانند نوشته شده است ، همچنین به ویندوز و بسیاری از سیستم عامل های دیگر نیز منتقل شده است. درگاه های وصله ویندوز توسط GnuWin32 و UnxUtils ارائه می شوند .

یک دستور patch نیز بخشی از ASCII تحت عنوان ابزارهای MSX-DOS2 برای MSX-DOS نسخه 2 است. [۶]

همچنین ببینید[ویرایش]

منابع[ویرایش]

 

لینک های خارجی[ویرایش]

  • patch – Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
  • انواع گنو (شامل تفاوت و پچ) ؛ مستندات
  • ابزارهای گنو برای Win32 – پورت ابزار Win32 ، از جمله تفاوت و پچ
  • Dickey, Thomas E. "DIFFSTAT – make histogram from diff-output". Archived from the original on 2020-01-22. Retrieved 2020-05-01
  1. Larry Wall (May 24, 1985). "patch version 1.3". Google.com at mod.sources. Archived from the original on 24 January 2020. Retrieved 12 July 2021.
  2. http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ بایگانی‌شده در ۲۰۱۷-۰۶-۰۷ توسط Wayback Machine OpenBSD patch source
  3. https://sourceforge.net/projects/schilytools/files/ A version of patch exists in the Schily tools collection
  4. A version of patch is maintained by IBM, Oracle and the Open Software Foundation
  5. "Patch - Free Software Directory". Free Software Directory. Free Software Foundation. 2010-05-01. Retrieved 2016-05-25.
  6. MSX-DOS2 Tools User's Manual by ASCII Corporation