Сборка deb-пакетов при помощи pbuilder

В данной статье пойдёт речь об одном из способов сборки пакетов "домашних условия". Для этого нам потребуется pbuilder и исходные коды требуемого приложения.

Установка системы сборки pbuilder

Установим необходимое из репозитория:

sudo apt-get install pbuilder debootstrap devscripts dh-make

Обратите внимание что первичная загрузка окружения для сборки осуществляется благодаря утилите wget, а так же после того как базовая система будет подготовлена, но ещё не собрана в base.tgz.
Поэтому, если используется прокси, но он не проксирует прозрачно, тогда необходимо явно указать хост и порт, укажите в /etc/pbuilderrc нужный сервер, например:

export http_proxy="http://192.168.1.2:3128/"

Так же нам для сборки kannel потребуются header файлы базы данных oracle, которая находится в /opt/oracle, укажем это:

BINDMOUNTS="/opt/"

При подготовке используются зеркала из локального /etc/apt/source.list, запустим скрипты для подготовки среды, в которой будет выполняться сборка пакетов:

sudo pbuilder --create --distribution precise

Опционально:
--mirror ftp://ftp.us.debian.org/debian/
--othermirror "deb http://mirror.yandex.ru/debian-multimedia/ main"
--debootstrapopts "--keyring=/usr/share/keyrings/debian-archive-keyring.gpg"
--variant=buildd

Чтобы получить доступ к командной строке образа который мы создали в режиме chroot (изменения не сохранятся):

sudo pbuilder --login

А если необходимо сохранить изменения после логина:

sudo pbuilder --login --save-after-login

Обновление пакетов внутри окружения для сборки:

sudo pbuilder --update

Сборка пакетов при помощи pbuilder выглядит так:

sudo pbuilder build filename.dcs

Либо через pdebuild (необходимо находиться в директории с папкой debian/):

sudo pdebuild

Подготовка архива с исходными кодами к сборке при помощи pbuilder 

Опыты будем проводить на SMS-шлюзе kannel, который в одной из предыдущих постов был более подробно рассмотрен. Скачаем исходные коды с сайта разработчиков:

wget -c http://www.kannel.org/download/1.5.0/gateway-1.5.0.tar.gz

Распакуем архив, затем перейдём в директорию с исходниками:

tar xfv gateway-1.5.0.tar.gz
cd gateway-1.5.0

В комплекте с пакетом идёт уже подготовленные правила для сборки deb-пакета, но они не совсем подходят под то что мы хотим получить в итоге (удалим её, затем создадим свою).

mv debian debian_old
dh_make --single --native

Сделаем отступ в одну строку и добавим следующее:

override_dh_auto_configure:
        dh_auto_configure -- --enable-start-stop-daemon --with-oracle --prefix=/opt/kannel

Это заменит стандартный режим конфигурирования без аргументов.

Запуск сборки

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

Так же можно запустить компиляцию через

pbuilder --build <имя_пакета>.dsc

Находясь при этом в директории в которой этот dsc файл находится.