Ръководство за опаковане на Ubuntu

документация

Опаковка с Debhelper


[Важно]

Изисквания: Изискванията от раздела "Packaging From Scratch" плюс debhelper и dh-make

Като опаковка, рядко ще създавате пакети от нулата, както направихме в предходната секция. Както можете да си представите, много от задачите и информацията в файловете с правила , например, са общи за пакетите. За да направите опаковането по-лесно и по-ефективно, можете да използвате debhelper, за да помогнете за тези задачи. Debhelper е набор от Perl скриптове (с префикс dh_ ), които автоматизират процеса на изграждане на пакети. С тези скриптове, изграждането на Debian пакет става съвсем проста.

В този пример отново ще изградим пакета GNU Hello, но този път ще сравняваме нашата работа с пакета Ubuntu hello-debhelper . Отново създайте директория, в която ще работите:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

След това вземете пакета за Ubuntu източник:

apt-get източник hello-debhelper cd ..

Подобно на предишния пример, първото нещо, което трябва да направите, е да разопаковате оригиналния (нагоре) тарбал.

tar -xzvf hello-2.1.1.tar.gz

Вместо да копираме горния tarball на hello_2.1.1.orig.tar.gz както направихме в предишния пример, ще позволим на dh_make да свърши работата за нас. Единственото нещо, което трябва да направите, е да преименувате папката на източника, така че да е във формат <пакета> - <версия>, където името на пакета е малка. В този случай, просто неработещ tarball произвежда правилно име източник директория, за да можем да се движим в него:

cd hello-2.1.1

За да създадем първоначалната "debianization" на източника, ще използваме dh_make .

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_make ще ви зададе поредица от въпроси:

Тип пакет: единичен двоичен, няколко бинарни, библиотека, ядро ​​модул или cdbs? [s / m / l / k / b] s
Име на пакета: Captain Packager Имейл адрес: packager@coolness.com Дата: Thu, 6 Apr 2006 10:07:19 -0700 Име на пакета: hello Версия: 2.1.1 Лиценз: празна Тип опаковка: Single Hit to потвърдете: Въведете


[Внимание]

Пускайте dh_make само веднъж. Ако го стартирате отново, след като го направите за първи път, той няма да работи правилно. Ако искате да го промените или да направите грешка, премахнете директорията на източника и го направете отново нагоре. След това можете да мигрирате в директорията на източника и да опитате отново.

Движението dh_make -e прави две неща:

Програмата " Здравей " не е много сложна и както видяхме в секцията "Опаковка от нулата", опаковането не изисква много повече от основните файлове. Ето защо нека премахнем файловете .ex :

cd debian rm * .ex * .ex

За здравей , няма и вие

* Лиценз

Индекс на опаковката на Ubuntu

(използва се от dh_installdirs за създаване на необходимите директории), docs (използвани от dh_installdocs за инсталиране на програмна документация) или информация (използвана от dh_installinfo за инсталиране на информацията файл) в директорията на Debian . За повече информация относно тези файлове вижте раздела, наречен "примерни файлове dh_make".

В този момент трябва да имате само списъци с промени , compat , control , copyright и правила в дебианската директория. От секцията, наречена "Packaging From Scratch", е съставен единственият нов файл, който е файл, който съдържа debhelper версията (в този случай 4), която се използва.

В този случай ще трябва да коригирате промените на промените, за да отразите, че този пакет е наречен hello-debhelper, а не само Здравейте :

hello-debhelper (2.1.1-1) dapper; urgency = low * Първоначално освобождаване - Captain Packager Thu, 6 Apr 2006 10:07:19 -0700

С помощта на debhelper , единствените неща, които трябва да променим в контрола, са името (замествайки hello за hello-debhelper ) и добавянето на debhelper (> = 4.0.0) в полето Build-Depends за пакета източник. Пакетът Ubuntu за Hello-debhelper изглежда така:

Можем да копираме файла с авторските права и скриптовете след и от предишния от пакета Ubuntu hello-debhelper , тъй като те не са се променили от секцията "Packaging From Scratch". Също така ще копираме файла с правилата, за да можем да го проверим.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Последният файл, на който трябва да разгледаме, е правила , в които може да се види силата на скриптовете. Версията на правилата на Debhelper е малко по-малка (54 реда в сравнение с 72 реда във версията от секцията "правила").

Версията на Debhelper изглежда така:

#! / usr / bin / make -f пакет = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findingstring noopt, $ (DEB_BUILD_OPTIONS)) CFLAGS + = O2 endif #export DH_VERBOSE = : dh_testdir dh_clean rm -f изграждане - $ (MAKE) -i distclean install: изграждане dh_clean dh_installdirs $ (MAKE) префикс = $ (CURDIR) / debian / $ (пакет) / usr \ mandir = $ (пакет) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (пакет) / usr / share / info \ install build: ./configure --prefix = / usr $ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Няма файлове, независими от архитектура, които да бъдат качени # генерирани от този пакет. Ако имаше такива, щяха да бъдат направени тук. binary-arch: инсталирате dh_testdir -a dh_testroot -a dh_installdocs -a НОВИНИ dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -а двоичен: двоичен-indep двоичен- arch .PHONE: двоичен двоичен арх двоичен-indep чист checkroot

Забележете, че задачи като тестване, ако сте в правилната директория ( dh_testdir ), като се уверите, че изграждате пакета с root права ( dh_testroot ), инсталирате документацията ( dh_installdocs и dh_installchangelogs ) и почиствате след изграждането ( dh_clean ) , Много пакети са много по-сложни от тези, които съдържат правила, не са по-големи, защото скриптовете на debhelper обработват повечето задачи. За пълен списък на скриптовете debhelper , моля, вижте секцията "Списък на скриптовете на debhelper ". Те също са добре документирани в съответните им страници. Това е полезно упражнение за четене на страницата на човека (те са добре написани и не дълги) за всеки помощен скрипт, използван в горния файл с правила .