Пересборка пакета для Debian

terminal Компьютерное

В Debian пересборка пакета выполняется достаточно легко. Допустим вы системный администратор и решили что вам нужно что-то поменять в исходном коде программы для получения доступа к отключенной возможности или правке критической ошибки, да много чего еще. Вот тут вам и поможет моя запись ;)

Итак, разберем пересборку пакета на примере squid3.

Перед тем как начать, убедитесь что у вас включены источники исходных кодов в /etc/apt/sources.list (это которые начинаются не на deb , а на deb-src). Эти источники дадут вам скачать исходные коды всех программ имеющихся в репозитории.

К примеру у вас запись будет:

deb http://security.debian.org/ stable/updates main contrib non-free

Это значит, что у вас не будет исходных текстов squid3 — только уже готовые, собранные кем-то за вас пакеты.
Все что вам нужно — это добавить такую же строку следом, и изменить deb на deb-src. Получится вот так:

deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

Сохраните ваш /etc/apt/sources.list и выполните

#apt update

Скачиваем исходный код и зависимости для сборки

Мы добавили репозитории с исходными кодами и обновили свой список файлов. Теперь качаем squid3

#apt source squid

После скачивания исходников самого squid3 нам нужно скачать зависимости для сборки пакета. То есть — те пакеты которые требуются для установки чтобы собрать наш пакет.

#apt build-dep squid3

Эта команда установит пакеты требуемые для сборки — если, конечно, вы их не ставили до этого. Теперь мы можем приступать к модификации исходных кодов нужного нам пакета и пересборке.

Модификация и пересборка

В этой заметке мы включим http-violations в squid3. Переходим к исходникам которые мы скачали. Правим файл debian/rules — добавим туда опцию —enable-http-violations и сохраняем его.

Сборка

Перед самой сборкой, убедимся что у нас есть установленные devscripts.

#apt install devscripts

Если установили, то возвращаемся в корень директории с исходными кодами и запускаем сборку.

$debuild -uc -us -b

Пересборка пакета запустится и вы увидите в терминале что-то вроде вот такого:

[...]
dh_gencontrol -psquid  
dpkg-gencontrol: warning: package squid: unused substitution variable ${perl:Depends}
dh_md5sums -psquid 
dh_builddeb -psquid 
dpkg-deb: building package 'squid' in '../squid_3.5.19-1_amd64.deb'.
dh_gencontrol -psquid-dbg  
dh_md5sums -psquid-dbg 
dh_builddeb -psquid-dbg 
dpkg-deb: building package 'squid-dbg' in '../squid-dbg_3.5.19-1_amd64.deb'.
dh_gencontrol -psquidclient  
dh_md5sums -psquidclient 
dh_builddeb -psquidclient 
dpkg-deb: building package 'squidclient' in '../squidclient_3.5.19-1_amd64.deb'.
dh_gencontrol -psquid-cgi  
dh_md5sums -psquid-cgi 
dh_builddeb -psquid-cgi 
dpkg-deb: building package 'squid-cgi' in '../squid-cgi_3.5.19-1_amd64.deb'.
dh_gencontrol -psquid-purge  
dh_md5sums -psquid-purge 
dh_builddeb -psquid-purge 
dpkg-deb: building package 'squid-purge' in '../squid-purge_3.5.19-1_amd64.deb'.
 dpkg-genchanges --build=any,all >../squid3_3.5.19-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build squid3-3.5.19
dpkg-buildpackage: info: binary-only upload (no source included)
Now running lintian...
N: 1 tag overridden (1 warning)
Finished running lintian.

Пакет собран и будет находиться в родительской директории. Теперь нам его надо переустановить.

#dpkg -i squid3*.deb

На этом всё. Удачи :)

Оцените статью
( 1 оценка, среднее 5 из 5 )
Блог админа