Vodnik za pakiranje Ubuntu

Dokumentacija

Pakiranje z Debhelperjem


[Pomembno]

Zahteve: zahteve iz poglavja "Pakiranje iz nič" plus debhelper in dh-make

Kot pakirni stroj redko ustvarjate pakete iz nič, kot smo naredili v prejšnjem razdelku. Kot si lahko predstavljate, so na primer številne naloge in informacije v datoteki pravil običajne za pakete. Za lažje in učinkovitejše pakiranje lahko uporabite debhelper za pomoč pri teh nalogah. Debhelper je nabor skript Perl (predfiksiran z dh_ ), ki avtomatizirajo proces izgradnje paketov. S temi skripti gradnja paketa Debian postane precej preprosta.

V tem primeru bomo ponovno zgradili paket GNU Hello, toda zdaj bomo primerjali naše delo z paketom Ubuntu hello-debhelper . Zopet ustvarite imenik, kjer boste delali:

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

Nato dobite izvorni paket Ubuntu:

apt-get vir hello-debhelper cd ..

Kot prejšnji primer, prva stvar, ki jo moramo storiti, je razpakiranje prvotne tarče (navzgor).

tar-xzvf hello-2.1.1.tar.gz

Namesto da bi kopirali zgornjo tarčo na hello_2.1.1.orig.tar.gz, kot smo to storili v prejšnjem primeru, bomo dovolili, da dh_make dela za nas. Edina stvar, ki jo morate storiti, je preimenovati izvorno mapo, tako da je v obliki - , kjer je paketna številka majhna. V tem primeru zgolj praznjenje tarka proizvaja pravilno imenovani izvorni imenik, da se lahko premaknemo vanj:

cd hello-2.1.1

Če želite ustvariti začetno "debianizacijo" vira, bomo uporabili dh_make .

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

dh_make vam bo nato postavil vrsto vprašanj:

Vrsta paketa: enojna binarna, več binarnih, knjižnica, modul jedra ali cdbs? [s / m / l / k / b] s
Ime vzdrževalca: Captain Packager E-poštni naslov: packager@coolness.com Datum: Thu, 6 Apr 2006 10:07:19 -0700 Ime paketa: hello Različica: 2.1.1 Licenca: prazno Vrsta paketa: Single Hit to potrdite: Vnesite


[Pozor]

Šele enkrat zaženite dh_make-e . Če znova zaženete, potem ko to storite prvič, ne bo delovalo pravilno. Če ga želite spremeniti ali narediti napako, odstranite izvorni imenik in znova raztegnite zgornji tarčni naboj. Nato lahko preselite v izvorni imenik in poskusite znova.

Izvajanje dh_make-e naredi dve stvari:

Program Hello ni zelo zapleten in, kot smo videli v poglavju "Pakiranje iz nič", embalaža ne zahteva veliko več kot osnovne datoteke. Zato odstranimo datoteke .ex :

cd debian rm * .ex * .EX

Za zdravo , tudi ti ne boš

* Licenca

* Indeks Vodnik za pakiranje Ubuntu

potreba README.Debian (datoteka README za določene težave Debianja , ne program README), dirs (ki jih dh_installdirs uporablja za ustvarjanje potrebnih imenikov), docs (ki jih dh_installdocs uporablja za namestitev programske dokumentacije) ali informacije (ki jih dh_installinfo uporablja za namestitev podatkov datoteke) v debian imenik. Za več informacij o teh datotekah glejte razdelek z imenom »datoteke primerov dh_make«.

Na tej točki bi morali imeti v debian imeniku samo datoteke za spreminjanje, združevanje , nadzor , avtorske pravice in pravila . Iz razdelka »Pakiranje iz nič« je edina datoteka, ki je nova, združitev , ki je datoteka, ki vsebuje različico debhelper (v tem primeru 4), ki se uporablja.

V tem primeru boste morali v tem primeru rahlo prilagoditi spremembo spremembe, da bo ta paket imenovan hello-debhelper in ne le zdravo :

hello-debhelper (2.1.1-1) dapper; nujnost = nizka * Začetna izdaja - kapitan Packager čet, 6 april 2006 10:07:19 -0700

Z uporabo debhelperja so edine stvari, ki jih moramo spremeniti v nadzor , ime (nadomeščanje hello za hello-debhelper ) in dodajanje debhelperja (> = 4.0.0) v polje Build-Depends za izvorni paket. Ubuntu paket za hello-debhelper izgleda:

Lahko kopiramo datoteko o avtorskih pravicah in skripte za postinst in prerm iz Paketa Ubuntu hello-debhelper , saj se od poglavja "Packaging From Scratch" niso spremenili. Kopirali bomo tudi datoteko pravil, da jo bomo lahko pregledali.

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.

Zadnja datoteka, ki jo moramo gledati, je pravila , kjer je mogoče videti moč debelper skriptov. Debelper različica pravil je nekoliko manjša (54 vrstic v nasprotju s 72 vrsticami v različici iz razdelka »pravila«).

Različica Debhelperja izgleda tako:

#! / usr / bin / make -f paket = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 čisto : dh_testdir dh_clean rm -f build-$ (MAKE) -i distclean install: graditi dh_clean dh_installdirs $ (MAKE) predpono = $ (CURDIR) / debian / $ (paket) / usr \ mandir = $ (CURDIR) / debian / $ (paket) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (paket) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Ni nobenih arhitekturno neodvisnih datotek, ki jih je treba prenesti #, ki jih ustvari ta paket. Če bi jih bilo, bi jih bilo tukaj. binarni lok: namestite dh_testdir -a dh_testroot -a dh_installdocs -a NOVOSTI 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 binarni: binarni-indep binarni- arch .PHONY: binarni binarni binarni binarni indep čisti checkroot

Upoštevajte, da naloge, kot je preskušanje, če ste v pravem imeniku ( dh_testdir ), pazite, da izdelujete paket z dovoljenji root ( dh_testroot ), namestite dokumentacijo ( dh_installdocs in dh_installchangelogs ) in čiščenje po izdelavi ( dh_clean ) . Veliko paketov, ki so veliko bolj zapleteni, kot je hello , pravila ne ustvarjajo več, ker skripti debhelper obdelujejo večino nalog. Za popoln seznam skriptov debhelper si oglejte razdelek »Seznam skriptov debhelper «. Prav tako so dobro dokumentirani na svojih zadevnih straneh človeka . Koristno je, da preberete stran človeka (dobro napisana in ne dolga) za vsak helper skript, uporabljen v zgornji datoteki pravil .