ещё не howto, просто заметки по культурной дебианизации

Dec 28, 2011 02:56

Итак, суть проблемы с deb'ами: у нас есть обычные deb'ы (бинарные пакеты для установки в систему), а есть src-пакеты, из которых собираются эти самые deb'ы.

В принципе, создание deb'а очень простое: нам надо написать control файл, сделать conffile с указанием файлов, которые мы считаем конфигами (init.d скрипты - конфиги, кстати), написать postinst prerm скрипты (если надо), положить указанные шутки в каталог DEBIAN, а сами файлы - в иерархию рядом. То есть, перед сборкой бинарного пакета мы будем наблюдать вот такое:

DEBAIN
usr
etc

(внутри usr/etc - подкаталоги). Как оно там оказывается - никого не интересует. Собирается оно командой dpkg -b . из каталога с приложением, или с указанием пути из другого места.

Это "простой и наивный" метод сборки.

Существует продвинутая версия, которая позволяет вам создать конструкцию, из которой можно собрать пакеты под разную архитектуру, которая будет иметь культурный changelog, и вообще, соответствовать тому, что вы получаете по apt-get source имя-пакета. Это точно то, из чего образуются deb'ы, которые ставятся с помощью aptitude из репозиториев.

И эта область много сложнее. По-крайней мере я до конца эту хрень не расковырял, так что даю "волшебный" рецепт.

Собираются бинарные пакеты из такой хрени с помощью dpkg-buildpackage. Ему нужна очень строгая структура данных в debian (не путаем с DEBIAN), он способен автоматически нумеровать пакеты согласно версии и т.д.

каталог debian делается для ПО один раз в жизни (в момент создания пакета). Дальше он только редактируется и исправляется. Сделать его можно ручками (не имею ни малейшего представления обо всём, что туды нужно сделать), либо с помощью утилиты dh_make (пакет dh-make).

Есть два режима: если мы говорим о готовом тарболе, в который мы (возможно) внесём какие-то изменения для правильной работы, то мы используем готовый файл tar.gz (bz2). Для этого нам надо в каталоге с распакованным tgz указать dh_make -f путь_к_тарболу.

Если же мы самого начала пишем исходник под debian (то есть у нас не будет "дебиан-специфик патчей на ваниль") и у нас нет тарбола (типовой пример - репозиторий в гите), то используется вот такая команда: dh_make --native.

Перед запуском dh_make нужно настроить переменные среды окружения:

DEBEMAIL="some.one@example.com"
DEBFULLNAME="Some One"
export DEBEMAIL DEBFULLNAME

После запуска и ответа на вопросы (чаще всего речь идёт о single binary), мы получаем каталог debian. Дальше мы можем отредактировать debian/control для правильного описания, секции и т.д., после чего (внимание!) debian можно (нужно) внести в гит. (git add debian). Если это сделать после попытки сборки, будет очень много мусора.

После этого можно пытаться собирать с помощью dpkg-buildpackage. Если всё хорошо - получим в корне собранный бинарный пакет.

Если нет - надо разбираться что не так. В моём случае виноватым был неправильный вызов install из Makefile'а. Вот как выглядит правильный:

install ptmax -D $(DESTDIR)/usr/bin/ptmax

Обратите внимание - путь в dst полный, включая имя файла, плюс опция -D (без них не соберётся).

dpkg, администрирование, debian, deb, howto, linux

Previous post Next post
Up