Відповіді:
Патчі зазвичай містяться у .diff
файлах, оскільки патчі створюються за допомогою diff
команди.
Патч - це серія вставок та видалень у вихідний код. З цієї причини, щоб використовувати патч, ви повинні побудувати додаток (наприклад, "foobar") з джерела після застосування патчу. Отже, поетапно:
1. Отримайте вихідний пакет для foobar .
Більшість дистрибутивів Linux (nb-виправлення не є унікальним для 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
посилатися на нову, виправлену версію, а не на стару.