Subsections

Packaging - Debian official maintainer's way

Бързо запознаване с hello и hello-debhelper

Целта на този процес е да се организира изграждането на сорс и бинарни пакети, които да бъдат обработвани от инструментите за пакетиране, инсталиране, премахване и преконфигуриране. Целта е в системата да има установен ред и правила при изпълнението на тези дейности с което наистина ще държим нещата под наш контрол, независимо колко е голяма инсталираното от системата, знаейки какво е инсталирано, как е инсталирано, с чисто премахване или надграждане на нещо вече инсталирано. Debian е известен с легендарните си способности за чисто инсталиране и надграждане на пакетите на системата. В тази глава ще се постараем да обясним къде е генезиса на всичко това и то да не изглежда просто като легенда, а като рутинна практика при всекидневното използване на системата. Като реален пример може да се посочи десктопа на един от авторите който е система първоначално инсталирана преди около 5 години (към момента на писане на тази глава). Системата разбира се е подложена на всекидневни упгрейди, инсталации на нови пакети или тяхното премахване и други по-необичайни дейности, при които проблеми може и да има, но те са решими. През повечето време системата изглежда като току-що инсталирана. Чиста. Разбира се, това съвсем не значи, че в някой директории като /usr/local/ и в домашните директории на потребителите не може да се води война от инсталиране и премахване на каквото ви душа иска. Напротив, това не е територия на системата и е изцяло на вашата воля, какво ще правите там. Е, с глупави и опасни програми не си губете времето, внимавайте какво инсталирате и къде особено когато използвате суперпотребителя root. Научете Debian отвътре за да подчините и експлоатирате възможностите му за вашите потребителски цели.

Същото с dh-make и devscripts

По-дълги обяснения

На практика, след като се установи, че даден софтуер си заслужава да се включи в официалния архив от пакети на Debian, се изготвя debian source package, който включва upstream source и директорията с maintainer scripts. От този debian source package след това се получават debian binary packages (deb-файлове) за различните хардуерни архитектури, като се отчита и фактът, че има и такъв софтуер, който не е пригоден или предвиден за всички хардуерни архитектури, а само за една или няколко. Обикновено за получаването на базовите или начални версии на maintainer scripts за debian/ се използват Perl-скриптовете от пакета debhelper, след което се донастройват специфичните за пакета неща. В крайна сметка се създава унифицирано управление на процеса по конфигуриране на сорса, компилация, свързване и евентуално последващо конфигуриране и преконфигуриране на софтуера за различните хардуерни архитектури. Разбира се, maintainer scripts не изместват стандартните GNU devel tools, а работейки преди или над тях, ги използват по подходящ начин. Естествено, в крайна сметка се извикват стандартните GNU devel tools чрез файла debian/rules, който се явява стандартен файл за програмата make, само че не е именуван като Makefile, а започващ с shebang (#!) ред в началото си, указващ пътя до make. Използват се още доста файлове в maintainer scripts и пример за това как точно стават нещата, е даден в Debian New Maintainers' Guide. Едно доста добро обяснение като за начало би бил документът на IBM - Learn how to build easy-to-distribute packages for Debian users.

Инструменти улесняващи пакетирането

Ще обясним накратко кои пакети и кои програми идващи с тях обикновено се използват при този процес. Тук ще дадем само някои насоки, което не изключва прочитането на man(1) страниците на програмите и документацията в директориите /usr/share/doc/име_на_пакет/. Имайте предвид, че постоянно могат да се появяват такива, но възлагайте на тях само рутинната част по създаването на файловете необходими за пакетиране, след което лично се убедете в тяхното съдържание и нанесете съответните корекции, така щото сорс пакета който създавате да се получат съответните бинарни пакети ( deb(5)) в съответствие с всички правила и норми. Процеса може да бъде много прост и рутинен, но и много сложен и необичаен, всичко зависи от това какъв сорс пакетирате и как точно сте решили да го направите.

Пакета dh-make

Съдържа програмата dh_make(8), която се използва за първоначалното създаване на директорията debian и файловете в нея. С други думи спестява ви тази рутинна дейност, но задължително трябва да разгледате файловете и да внесете необходимите промени за точно този сорс пакет който дебианизирате. Дотук вече трябва да сте добили представа как се борави с debian binary packages (или deb(5)). Нека видим как се получават те. Захващаме се да разберем какво има и в debian source packages. Само да напомним, че без да сте прочели Debian New Maintainer's Guide, още достъпен и като пакет maint-guide, или поне да сте прехвърлили с поглед стария му превод, ще ви е доста трудно да разберете за какво ще се говори в следващата глава. Пакетът dh-make съдържа скрипта dh_make(8), който генерира debian source package от regular source code archive (или upstream sources), подготвя control-файловете, както и предоставя примерна конфигурация за debhelper(1) инструментите, за която конфигурация обикновено е необходимо само малко донастройка, за за да пасне за конкретния случай. Или с други думи, dh-make се използва за създаване на скелета или общия вид на debian source package, след което може да доредактирате файловете в директория debian/ както намерите за добре. По-опитните maintainers могат и без него, но силно се препоръчва да се използва от начинаещите потребители, при което по-лесно и бързо ще свикнат с процеса на конфигуриране на debian source packages. Използва се например така:

# cd program-source-directory
# dh_make -e your.maint@address -f ../programname-x.y.z.tar.gz

Разбира се, ще отговорите на няколко въпроса, като дали това ще е single или multiple binary packages, библиотеки и прочее. За повече се обърнете към Debian New Maintainer's Guige, главата First Steps, т. 2.4 Initial Debianization.

Пакета debhelper

Съдържа колекция от мощни Perl скриптове които можете да извиквате от debian/rules, който обикновено е файл за програмата make(1), както и от други скриптове като .preinst,.postinst,.prerm,.postrm. Скриптовете са много, просто изпълнете: dpkg -L denhelper за да ги видите. Скриптовете dh_* от пакета debhelper се извикват от maintainer scripts в debian source packages, и по точно от файла debian/rules. Използват се за автоматизиране на процедурите по построяването на debian binary packages, а именно, като инсталиране на определени файлове в дадения пакет, компресиране, установяване на съответните права и собственост, интегриране с debian menu system и много други. Повечето debian source packages използват скриптовете на debhelper като част от техния build процес.

Ето и какви Perl скриптове се съдържат във версия 4.0.2 на пакета debhelper. За да ги листнем, изпълняваме:

$ dpkg -L debhelper | grep usr/bin

Следват кратки обяснения за скриптовете от пакета debhelper:

Разбира се, не при всички debian source packages ще се извикват всички dh_* скриптове. Това ще зависи от съответния пакет, както и от решенията на maintainer-а. Най-добре ще е първо да изчетете добре man-стрaниците за тези скриптове, както и четенето на самите скриптове (Perl) не пречи, разбира се. Вземете, например, сорса на MPlayer от CVS или някое негово издание и разгледайте файла debian/rules за това какви dh_* скриптове се извикват от него. Същото можете да направите и с който и да е debian source package, включен в официалния Debian архив. Другото, което е добре да направите, е да разгледате самия debhelper като debian source package, и по специално неговата директория debian/ и естествено Perl-скриптовете, които предоставя. Изпълняваме:

# apt-get source debhelper

Пакета debconf, debconf-utils, po-debconf

Унифициран начин пакетите да задават въпроси на потребители при първоначално инсталиране, последващо преконфигуриране и премахване.

Пакета devscripts

Съвременният начин. zless /usr/share/doc/devscripts/README.gz Предвиден е да облекчи живота на Debian package maintainers. Съдържа следните скриптове, като dependencies/recommendations са показани в счупените скоби:

Пакета debmake

Старият начин. Това е още един от пакетите, предназначени за разработка и поддръжка на Debian source packages. Но този пакет се използва все по-рядко.

Пакета dpatch, patchutils, dh-kpatches

Пакета cdbs

Пакета cvs-buildpackage

Пакета svn-buildpackage

Пакета arch-buildpackage

Пакета tla-buildpackage

Инструменти за проверка и контрол

Пакета linda

Пакета lintian

Пакета debian-test

Пакета debbugs

Пакета reportbug

Примерни програми за пакетиране

FIXME: да се започне и довърши step-by-step пример за:

Примерни apt хранилища с binary и source пакети:



Nikola Antonov 2004-10-31