Как я применяю патчи к программному обеспечению?

Поскольку более новые версии видят ответ Koterpillar.


IIRC ibus использование gconf сохранить его настройки, таким образом, необходимо смочь использовать также gconf-editor или gconftool (CLI) для получения/устанавливания тех настроек.

15
16.10.2013, 00:44
1 ответ

Патчи обычно содержатся в .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 относиться к Вашей новой, исправленной версии а не старой.

21
27.01.2020, 19:49

Теги

Похожие вопросы