Этот документ описывает процесс создания пакетов для Debian GNU/Linux. В этом руководстве мы пытаемся следовать римской поговорке Longum iter est per preaecepta, breve et efficax per exempla! (It's a long way by the rules, but short and efficient with examples!)[1].
Одна из сильных, по сравнению с другими дистрибутивами, сторон Debian GNU/Linux — это система управления пакетами. Несмотря на то, что для Debian уже существует очень много пакетов, может случиться так, что вам понадобится установить программу, для которой не существует соответствующего пакета. Это может заставить вас задуматься о том, как создать свой собственный пакет. :) Да, вам понадобятся некоторые знания о программировании под Unix, но ни в коем случае вы не обязаны быть гуру.
Последняя версия этого документа всегда доступна как http://www.debian.org/doc/maint-guide
,
вы также можете найти этот документ в пакете maint-guide-ru
[2].
Сначала вы должны установить все необходимые для разработки пакеты. Заметьте, что ниже приведенный список не содержит пакеты приоритетов ‘essential’ или ‘required’ — эти пакеты уже установлены на вашу машину.
На момент написания этого документа официальной стабильной версией был выпуск 2.1 (‘slink’), а выпуск 2.2 (‘potato’) только создавался. Поэтому большинство пакетов, упомянутых здесь, взяты из ‘potato’.
Нижеперечисленные пакеты присутствуют в стандартной поставке Debian 2.1, что означает, что скорее всего они уже установлены на вашей машине (как, впрочем, и пакеты, перечислинные в зависимостях к этим). Несмотря на это, мы рекомендуем вам при помощи команды ‘dpkg -s имя-пакета’ проверить, что они установлены.
binutils
cpp
cpp(1)
)
cpio
tar
или zip
(см. cpio(1)
).
dpkg-dev
dpkg-source(1)
).
file
file(1)
).
gcc
g++
, g77
, gpc
или
другой). (см. gcc(1)
, g++(1)
, g77(1)
,
gpc(1)
)
libc6-dev
gcc
.
Несмотря на то, что некоторые программы все еще рекомендуют и/или используют
libc5, мы рекомендуем вам использовать новую версию (libc6). (см. ‘info
libc’)
make
imake
и xmkmf
(они позволяют создавать make-файлы из
файлов специального вида). Многие современные программы создают сценарий
configure
и make-файлы при помощи утилит autoconf
и
automake
, поэтому вам также могут понадобиться эти утилиты (см.
‘info make’, imake(1)
, xmkmf(1)
,
autoconf(1)
, automake(1)
).
patch
diff
(см.
patch(1)
).
perl5-5.005
perl(1)
).
Из раздела ‘devel’ вам могут понадобиться следующие пакеты:
dh-make
debhelper
dh_make
необходима для создания скелета будущего пакета.
При этом в получающихся управляющих файлах будут использованы программы из
пакета debhelper
. При создании пакетов вовсе не обязательно
использовать эти программы, но мы очень рекомендуем их начинающим
разработчикам. Они позволяют сильно упростить процесс создания и поддержки
пакетов (см. dh_make(1)
, debhelper(1)
,
/usr/share/doc/debhelper/README
).
devscripts
/usr/share/doc/devscripts/README.gz
).
fakeroot
fakeroot(1)
).
lintian
lintian(1)
,
/usr/share/doc/lintian/lintian.html/index.html
).
И, наконец, вам следует установить очень важные пакеты из раздела doc:
debian-policy
/usr/share/doc/debian-policy/policy.html/index.html
).
developers-reference
/usr/share/doc/developers-reference/developers-reference.html/index.html
).
packaging-manual
/usr/share/doc/packaging-manual/packaging.html/index.html
).
Вам также понадобится (для создания цифровой подписи к пакету) программа
зашифрования — либо PGP (пакеты pgp-*
), либо GPG (пакет
gnupg
). Это особенно важно, если вы хотите предоставлять ваш
пакет другим людям (вне всякого сомнения, вы будете делать это после того, как
ваша работа будет включена в дистрибутив Debian). Однако, в силу несколько
странного экспортного законодательства США, вы не можете загрузить необходимые
программы зашифрования с ближайшего зеркала Debian. Несмотря на это, Debian
предоставляет эти пакеты через сервер, физически находящийся в стране, отличной
от США, и называемый non-US.debian.org
. На
вашем зеркале вы можете найти файл README.non-US
, который
описывает как вы можете найти ближайшее зеркало этого сервера.
Перед началом работы над созданием пакета мы рекомендуем вам прочитать документацию на все программы, которые вы будете использовать. Это может сначала показаться излишеством, но потом вы будете очень рады, что прислушались к нашему совету…
Внимание: Пакет debmake
содержит программы, аналогичные
по функциональности программам, входящим в пакет dh-make
.
Описание пакета debmake
не приводится в этом
документе. Вы можете найти дополнительную информацию на странице the Debmake manual
.
Вы можете создавать пакеты двух типов: двоичные пакеты и пакеты с исходными текстами. Последние содержат код, который позволяет скомпилировать программу и создать пакет. Двоичные пакеты содержат только скомпилированную программу. Пожалуйста, не путайте исходные тексты программы и пакет с исходными текстами.
Debian использует термин сопровождающий либо разработчик пакета (maintainer) для человека, который создает пакеты, автор (author) для человека, который создал программу, и активный автор (upstream maintainer) для человека, осуществляющего работу над программой в настоящий момент времени. Обычно автор и активный автор являются одним и тем же человеком (а иногда тот же человек выступает и в роли сопровождающего). Если вы создали программу и хотите, чтобы ее включили в Debian, вы можете сделать это, подав соответствующее заявление.
Для того, чтобы ваш пакет попал в следующий выпуск Debian (почему бы и нет, если программа полезна?), вы должны стать официальным разработчиком Debian. Этот процесс описан в «Руководстве разработчика». Пожалуйста, прочитайте этот документ.
jrodin@jagor.srce.hr
mss@transas.com
alexey@pepper.spb.ru