Ubuntu Packaging Guide

dokumentácia

Balenie s Debhelperom


[Dôležité]

Požiadavky: Požiadavky z časti nazvanej "Obal od začiatku" plus debhelper a dh-make

Ako baliareň zriedka vytvoríte balíčky od začiatku, ako sme urobili v predchádzajúcej časti. Ako si viete predstaviť, mnohé úlohy a informácie v súbore pravidiel sú napríklad bežné pre balíky. Ak chcete zjednodušiť a zefektívniť balenie, môžete s týmito úlohami použiť debhelper . Debhelper je sada skriptov Perl (s predponou dh_ ), ktoré automatizujú proces budovania balíkov. S týmito skriptami sa stavanie balíku Debianu stane pomerne jednoduchým.

V tomto príklade budeme opäť zostaviť balík GNU Hello, tentoraz však budeme porovnávať našu prácu s balíkom Ubuntu hello-debhelper . Znova vytvorte adresár, na ktorom budete pracovať:

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

Potom získate zdrojový balík Ubuntu:

apt-get zdroj hello-debhelper cd ..

Podobne ako v predchádzajúcom príklade, prvá vec, ktorú musíme urobiť, je rozbaliť pôvodný (upstream) tarball.

tar -xzvf hello-2.1.1.tar.gz

Namiesto kopírovania nadradeného tarball na hello_2.1.1.orig.tar.gz ako sme urobili v predchádzajúcom príklade, necháme dh_make robiť prácu pre nás. Jediná vec, ktorú musíte urobiť, je premenovať zdrojovú zložku, takže je vo forme - , kde je názov balíka malý. V takomto prípade sa vytvorí správne pomenovaný zdrojový adresár, aby sme sa doňho mohli presunúť:

cd hello-2.1.1

Ak chcete vytvoriť počiatočnú debianizáciu zdroja, použijeme dh_make .

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

dh_make sa potom spýta na sériu otázok:

Typ balenia: jedno binárne, viacnásobné binárne, knižnica, modul jadra alebo cdbs? [s / m / l / k / b] s
Meno správcu: Captain Packager E-mailová adresa: packager@coolness.com Dátum: Thu, 6 Apr 2006 10:07:19 -0700 Názov balíka: hello Verzia: 2.1.1 Licencia: prázdny Typ balíka: Jeden Hit to potvrďte: Zadajte


[Výstraha]

Spustiť iba dh_make -e raz. Ak ho po prvom spustení znova spustite, nebude to fungovať správne. Ak ho chcete zmeniť alebo urobili chybu, odstráňte zdrojový adresár a znova odkrývajte pôvodný tarball. Potom môžete migrovať do zdrojového adresára a skúsiť znova.

Spustenie dh_make -e robí dve veci:

Program Hello nie je príliš komplikovaný a ako sme videli v sekcii nazvanej "Packaging From Scratch", balenie nevyžaduje oveľa viac ako základné súbory. Preto odstránime súbory .ex :

cd debian rm * .ex * .ex

Ahoj , tiež nebudete

* Licencia

* Ubuntu Packaging Guide Guide

potrebujeme súbor README.Debian (súbor README pre konkrétne problémy s Debian, nie program README), dirs (používa dh_installdirs na vytvorenie potrebných adresárov), docs (používa dh_installdocs na inštaláciu programovej dokumentácie) alebo info (používa dh_installinfo na inštaláciu info súborov) do adresára debian . Ďalšie informácie o týchto súboroch nájdete v časti s názvom Príklady súborov dh_make.

V tomto okamihu by ste mali mať v adresári debian iba súbory changelog , compat , control , copyright a rules . Z časti nazvanej "Packaging From Scratch" je kompatovaný jediný súbor, ktorý je súborom, ktorý obsahuje verziu debhelper (v tomto prípade 4), ktorá sa používa.

Budete musieť v tomto prípade mierne upraviť menič zmeny, aby ste odrážali, že tento balík je pomenovaný hello-debhelper a nie len ahoj :

hello-debhelper (2.1.1-1) dapper; naliehavosť = nízke * Počiatočné vydanie - Captain Packager Št, 6 Apr 2006 10:07:19 -0700

Použitie debhelpera , jediné, čo potrebujeme zmeniť v ovládaní, je meno (nahrádzanie hello pre hello-debhelper ) a pridanie debhelper (> = 4.0.0) do poľa Build-Depends pre zdrojový balík. Balík Ubuntu pre hello-debhelper vyzerá takto:

Môžeme skopírovať súbor s autorskými právami a skripty postinst a prerm z balíka Ubuntu hello-debhelper , pretože sa nezmenili od oddielu nazvaného "Packaging From Scratch". Taktiež skopírujeme súbor pravidiel, aby sme si ho mohli prezrieť.

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.

Posledným súborom, na ktorý sa musíme pozrieť, sú pravidlá , v ktorých je možné vidieť silu debhelperových skriptov. Debhelper verzia pravidiel je o niečo menšia (54 riadkov na rozdiel od 72 riadkov vo verzii zo sekcie nazvanej "pravidlá").

Verzia programu debhelper vyzerá takto:

#! / usr / bin / make -f balíček = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS)) CFLAGS + : dh_testdir dh_clean rm -f vytvoriť - $ (MAKE) -i distclean install: vytvoriť dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (balík) / usr \ mandir = $ (balíček) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (balík) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) (CC) "CFLAGS =" $ (CFLAGS) "

touch build binárne indep: install # Neexistujú žiadne súbory nezávislé od architektúry, ktoré sa majú nahrávať # generované týmto balíkom. Keby tam boli nejaké, boli by tu vyrobené. binárne-arch: inštalácia dh_testdir -a dh_testroot -a dh_installdocs -a NOVINKY dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binárne: binárne indep binárne- arch .PHONE: binárny binárny oblúk binárny-indep čistý checkroot

Všimnite si, že úlohy ako testovanie, ak ste v správnom adresári ( dh_testdir ), ubezpečujeme sa , že ste vytvorili balíček s oprávneniami root ( dh_testroot ), inštaláciou dokumentácie ( dh_installdocs a dh_installchangelogs ) a vyčistením po vytvorení ( dh_clean ) , Mnoho balíčkov je oveľa komplikovanejšie ako hello pravidlá súbory nie väčšie, pretože debhelper skripty zvládnuť väčšinu úloh. Úplný zoznam skriptov debhelper nájdete v časti s názvom Zoznam debhelper skriptov. Sú tiež dobre zdokumentované na príslušných stránkach človeka . Je to užitočné cvičenie na čítanie manuálovej stránky (sú dobre napísané a nie zdĺhavé) pre každý pomocný skript použitý vo vyššie uvedenom súbore pravidiel .