Патчи обычно содержатся в .diff
файлы, потому что патчи создаются с помощью diff
команда.
Патч является серией вставок и удалений в исходный код. Поэтому для использования патча, необходимо создать приложение (например, "foobar") из источника после применения патча. Так, на шагах:
1. Получите исходный пакет для foobar.
Большинство дистрибутивов Linux (n.b. исправление не уникально для Linux) имеет "исходные пакеты", можно использовать с этой целью, но так как они неоднородны, я только обращусь к формату первоисточника здесь. Первоисточник не является частью дистрибутива и может быть тверд найти. Хорошим местом для запуска является Википедия, которая имеет статьи для многих распространенных приложений, и статья должна содержать ссылку на домашнюю страницу с исходной загрузкой. Можно также погуглить себя, очевидно. Исходный пакет назовут чем-то как foobar.0.1.tar.bz2
. Распакуйте это - Вам теперь назвали каталог foobar.0.1
.
2. Добавьте патч.
Иногда патчи являются единственными файлами, и иногда они - ряд нескольких файлов. Скопируйте тех, которые в foobar.0.1
и cd foobar.0.1
. Затем, необходимо работать patch
команда. Это читает из стандартного входа, таким образом, Вы хотите передать по каналу .diff
файл в. Хитрая часть определяет, что использовать для -p
опция (при отсутствии инструкций с патчем). Чтобы сделать это, необходимо посмотреть в начале файла исправления. Например:
--- old/comm.c 2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c 2006-07-07 02:39:24.000000000 +0000
В этом случае, comm.c
название исходного файла, который будет изменен. Однако заметьте, что существует каталог, добавленный к нему. Так как это не тот же каталог ("старый" по сравнению с "новым"), это - большая подсказка, что эта часть пути является спамом (в наших целях). Цель -p
переключатель (см. man patch
) должен устранить этот префикс. Это берет число, которое является количеством наклонных черт (/
) устранить, со всем промежуточным; в этом случае мы использовали бы -p1
уменьшать путь только к comm.c
.
Это предполагает comm.c
находится на самом деле в том же каталоге, который будет другой подсказкой относительно того, корректна ли Ваша интерпретация. Если обе тех строки были src/comm.c
, и comm.c
находится на самом деле в src
подкаталог Вашего дерева сборки, затем необходимо использовать -p0
- остерегайтесь этого не использование -p
вообще удалит ВСЕ наклонные черты. Если путь является полным (т.е. начинается /
), это, вероятно, что Вы хотите. Теперь примените патч:
patch -p1 < patch.diff
Источник был теперь изменен. Если существует больше .diff
файлы, примените их тот же путь.
3. Сборка и установка.
Это - нормальный процесс, Вы пошли бы до сборки что-то из источника - сначала ./configure
, затем make
, make check
, make install
. Прежде чем Вы сделаете последний, если у Вас уже есть существующая установка foobar
, решите, хотите ли Вы удалить или перезаписать это или как Вы собираетесь иметь дело с конфликтом имен. Вы, вероятно, хотите foobar
относиться к Вашей новой, исправленной версии а не старой.