Jump to content

патч (Unix)

(Перенаправлено из файла патча )
пластырь
Оригинальный автор(ы) Ларри Уолл
Разработчик(и) Пол Эггерт, Уэйн Дэвисон, Дэвид МакКензи, Андреас Грюнбахер
Первоначальный выпуск 24 мая 1985 г .; 39 лет назад ( 1985-05-24 )
Репозиторий
Операционная система Unix и Unix-подобные , Plan 9 , MSX-DOS , Microsoft Windows
Платформа Кросс-платформенный
Тип Команда

Компьютерный патч — это Unix программа , которая обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, называемом файлом исправления . Файл исправления (сокращенно также называемый патчем ) представляет собой текстовый файл, который состоит из списка различий и создается путем запуска соответствующей программы сравнения с исходным и обновленным файлом в качестве аргументов. Обновление файлов с помощью исправления часто называют применением исправления или просто исправлением файлов.

Оригинальная программа исправлений была написана Ларри Уоллом (который впоследствии создал Perl язык программирования ) и размещена на mod.sources[1] (который впоследствии стал comp.sources.unix) в мае 1985 года.

патч был добавлен в XPG4, который позже стал POSIX . [2] Код Уолла остается основой программ «исправлений», предоставляемых в OpenBSD . [3] FreeBSD , [4] и шилитулс. [5] [ сомнительно обсудить ] Сообщается, что Open Software Foundation , которая объединилась с The Open Group , поддерживала производную версию. [ сомнительно обсудить ]

Проект GNU / FSF поддерживает свой патч, созданный на основе версии Ларри Уолла. Репозиторий отличается от репозитория GNU diffutils, но документация управляется вместе. [6]

Контекст использования

[ редактировать ]

Патч, разработанный программистом для других программистов, часто использовался для обновления исходного кода до более новой версии. Из-за этого многие люди стали ассоциировать патчи с исходным кодом, тогда как на самом деле патчи можно применять к любому тексту. Пропатченные файлы не накапливают ненужный текст, что некоторые люди воспринимают исходя из английского значения этого слова; Патч способен как удалять текст, так и добавлять его.

Описанные здесь патчи не следует путать с двоичными патчами , которые, хотя и могут быть концептуально схожи, распространяются для обновления бинарных файлов, составляющих программу, до новой версии.

Патчи в разработке программного обеспечения

[ редактировать ]

Файлы различий, которые служат входными данными для исправления, представляют собой читаемые текстовые файлы, а это означает, что люди могут легко просмотреть или изменить их перед использованием.

Помимо программы « diff », различия также могут создаваться другими программами, такими как Subversion , CVS , RCS , Mercurial и Git .

Патчи были важнейшим компонентом многих систем контроля версий , включая CVS .

Расширенные различия

[ редактировать ]

При использовании более сложных различий исправления можно применять даже к файлам, которые были изменены за это время, при условии, что эти изменения не мешают работе исправления. Это достигается за счет использования « контекстных различий » и « унифицированных различий » (также известных как «unidiffs»), которые окружают каждое изменение контекстом , который представляет собой текст непосредственно до и после измененной части. Затем Patch может использовать этот контекст для поиска области, подлежащей исправлению, даже если она была смещена изменениями ранее в файле, используя номера строк в файлах различий в качестве отправной точки. Из-за этого свойства контекстные и унифицированные различия являются предпочтительной формой исправлений для отправки во многие программные проекты.

Вышеупомянутые функции делают diff и patch особенно популярными для обмена модификациями программного обеспечения с открытым исходным кодом . Посторонние могут загрузить новейший общедоступный исходный код, внести в него изменения и отправить их в форме различий команде разработчиков. Используя различия, команда разработчиков имеет возможность эффективно проверять исправления перед их применением и применять их к более новой базе кода, чем та, к которой имел доступ внешний разработчик.

Примеры использования

[ редактировать ]

Чтобы создать патч, можно запустить в оболочке следующую команду:

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

Чтобы применить патч, можно запустить в оболочке следующую команду:

$ patch < mods.diff

Это указывает патчу применить изменения к указанным файлам, описанным в разделе mods.diff. Патчи к файлам в подкаталогах требуют дополнительных -pnumber опция, где число равно 1, если базовый каталог исходного дерева включен в diff, и 0 в противном случае.

Патчи можно отменить или обратить вспять с помощью кнопки ' -R' вариант:

$ patch -R < mods.diff

В некоторых случаях, когда файл не идентичен версии, для которой был создан файл различий, исправление невозможно будет применить без ошибок. Например, если в начале вставлены строки текста, номера строк, указанные в патче, будут неверными. patch может исправить это, просматривая близлежащие строки, чтобы переместить текст, который нужно исправить. строк контекста Он также будет восстанавливаться при изменении (для контекста и унифицированных различий); это описывается как фузз .

Порты патча

[ редактировать ]

Первоначально написанный для Unix и Unix-подобных систем, патч также был портирован на Windows и многие другие платформы. Порты патчей для Windows предоставляются GnuWin32 и UnxUtils .

А patch Команда также является частью ASCII инструментов MSX -DOS2 для MSX-DOS версии 2. [7]

См. также

[ редактировать ]
  1. ^ Уолл, Ларри (8 мая 1985 г.). «патч версии 1.3» . Группа новостей : mod.sources . Архивировано из оригинала 4 апреля 2023 г. Проверено 14 июля 2024 г.
  2. ^ patch – Справочник по оболочке и утилитам, Единая спецификация UNIX , версия 4 от Open Group.
  3. ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/. Архивировано 7 июня 2017 г. в Wayback Machine. источнике исправления OpenBSD
  4. ^ FreeBSD – Справочник по оболочке и утилитам, Единая спецификация UNIX , версия 4 от Open Group.
  5. ^ «Шилитулс» .
  6. ^ «Patch.c\SRC — patch.git — патч GNU» .
  7. ^ Руководство пользователя инструментов MSX-DOS2 от ASCII Corporation
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 27cb4bf1d14b3686b30398d9b6a7742c__1722689580
URL1:https://arc.ask3.ru/arc/aa/27/2c/27cb4bf1d14b3686b30398d9b6a7742c.html
Заголовок, (Title) документа по адресу, URL1:
patch (Unix) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)