Надо патчить всё на свете, кроме шила и гвоздя

Продолжая тему сборки программ для Linux из исходников, хочу несколько слов сказать про патчи, накладываемые на программы.

Про них сказано очень много, но тема эта вечно актуальна и еще один материал общую картину не испортит. Патч (patch, в переводе с английского — «заплатка») представляет собой небольшой файл, в котором собраны сведения о разнице между старой и новой версиями программы: какие строки удалить, какие добавить, какие заменить. Представлено это всё в обычном текстовом формате, хотя и несколько специфическом.

Польза от патчей очевидна: современные программы в исходных кодах могут «весить» десятки мегабайт и скачивать каждый раз свежую версию крайне нерационально. Поэтому разработчики выкладывают полную версию один раз, а все модификации оформляют в виде патчей. Ядро Linux уже давно разрабатывается по такой схеме. В последнее время и другие серьезные продукты переходят на нее. Например, если заглянуть в ftp-каталог растрового редактора Gimp, то можно увидеть, что есть основная версия, выложенная в октябре 2008 года и «весящая» около 15 мегабайт, а есть патч на декабрь 2009 года, объемом полмегабайта. Т.е. усовершенствования программы за более чем годовой период собраны в компактную заплатку. Как ее применить?

Скачиваем основную версию (см. ссылку выше), кладем архив в /usr/src, распаковываем

tar xvf gimp-2.6.0.tar.bz2


В результате должна появиться директория /usr/src/gimp-2.6.0. В нее кладем скачанный патч (см. вторую ссылку) и делаем

bunzip2 patch-2.6.8.bz2 | patch


Т.е. заархивированный патч на лету распаковывается, передается на вход консольной утилиты patch, а она уже вносит изменения в исходники.

После этого выполняются стандартные

./configure ; make ; sudo make install


И вот вы уже как на машине времени переноситесь их дремучего октября 2008 года в сравнительно свежий декабрь 2009 (если по дороге, конечно, не случится мелких неприятностей ).

(Продолжение следует).

Комментарии (3)

RSS свернуть / развернуть
+
0
avatar

Markony

  • 24 мая 2010, 20:30
+
0
Вся система портов в FreeBSD, весь Gentoo и прочие дистрибутивы основаны на бесконечном наложении заплаток на все и вся. Это альфа и омега, полезно такое почитать для новичков!
avatar

Sergei_T

  • 24 мая 2010, 20:44
+
0
Slackware — то же самое. Помимо готовых к установке пакетов там есть каталог sources, содержащий для каждого пакета запакованные исходники, патчи и специальный скрипт, который всё это собирает воедино. Всё прозрачно, в полном соответствии с лицензией GNU.
avatar

yababay

  • 24 мая 2010, 21:15

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.