Skip to main content

Ubuntu-verpakkingsgids - Verpakken met Deb Helper

Anonim

Verpakken met Debhelper

Belangrijk

Vereisten: De vereisten uit de sectie genaamd "Packaging from Scratch" plus debhelper en dh-make

Als een packager, zal je zelden pakketten helemaal opnieuw creëren zoals we in het vorige gedeelte hebben gedaan. Zoals je je kunt voorstellen, veel van de taken en informatie in de reglement bestand, bijvoorbeeld, zijn gemeenschappelijk voor pakketten. Om verpakkingen eenvoudiger en efficiënter te maken, kunt u gebruiken debhelper om te helpen met deze taken. Debhelper is een set Perl-scripts (voorafgegaan door dh_) die het proces van pakketopbouw automatiseren. Met deze scripts wordt het bouwen van een Debian-pakket heel eenvoudig.

In dit voorbeeld zullen we opnieuw het GNU Hello-pakket bouwen, maar deze keer zullen we ons werk vergelijken met de Ubuntu hello-debhelper pakket. Maak opnieuw een map aan waar je gaat werken:

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

Haal dan het Ubuntu-bronpakket op:

apt-get bron hallo-debhelper cd ..

Net als het vorige voorbeeld is het eerste wat we moeten doen, de originele (stroomopwaartse) tarball uitpakken.

tar -xzvf hello-2.1.1.tar.gz

In plaats van de stroomopwaartse tarball te kopiëren naar hello_2.1.1.orig.tar.gz zoals we in het vorige voorbeeld hebben gedaan, zullen we het laten dh_make doe het werk voor ons. Het enige dat u hoeft te doen is de bronmap hernoemen, zodat het in de vorm is van - waarbij packagename een kleine letter is. In dit geval produceert het untargeren van de tarball een correct genoemde bronmap zodat we er naartoe kunnen gaan:

cd hello-2.1.1

Om de initiële "debianisatie" van de bron te maken die we zullen gebruiken dh_make.

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

dh_make zal je dan een reeks vragen stellen:

Type pakket: enkelvoudig binair, meervoudig binair, bibliotheek, kernelmodule of cdbs? S / m / l / k / b s Naam Beheerder: Captain Packager E-mailadres: [email protected] Datum: do, 6 apr 2006 10:07:19 -0700 Naam van het pakket: hallo Versie: 2.1.1 Licentie: leeg Soort pakket: Enkele reis bevestigen: invoeren

Voorzichtigheid

Alleen rennen dh_make -e een keer. Als u het de eerste keer opnieuw uitvoert nadat u het de eerste keer hebt gedaan, zal het niet goed werken. Als je dit wilt wijzigen of een fout hebt gemaakt, verwijder dan de brondirectory en maak de upstream-tarball opnieuw leeg. Vervolgens kunt u migreren naar de brondirectory en het opnieuw proberen.

hardlopen dh_make -e doet twee dingen:

  • Creëert de hello_2.1.1.orig.tar.gz bestand in de bovenliggende map,
  • Creëert de basisbestanden die nodig zijn in debian / en veel sjabloonbestanden (.ex) die mogelijk nodig zijn.

De Hallo programma is niet erg ingewikkeld, en zoals we hebben gezien in de paragraaf genaamd "Packaging From Scratch", heeft het niet veel meer nodig dan de standaardbestanden. Laten we daarom de .ex bestanden:

cd debian rm * .ex * .EX

Voor Hallo, dat doe je ook niet

* Licentie

* Ubuntu Packaging Guide Index

nodig hebben README.Debian (README-bestand voor specifieke Debian-problemen, niet README van het programma), dirs (gebruikt door dh_installdirs om benodigde mappen aan te maken), docs (gebruikt door dh_installdocs om programmadocumentatie te installeren), of info (gebruikt door dh_installinfo om het infobestand te installeren) bestanden in de debian directory. Zie de sectie "dh_make voorbeeldbestanden" voor meer informatie over deze bestanden.

Op dit punt zou je alleen moeten hebben changelog, compat, controle, auteursrechten, en reglement bestanden in de debian directory. Van de sectie genaamd "Packaging from Scratch", is het enige bestand dat nieuw is compat, dat is een bestand met de debhelper versie (in dit geval 4) die wordt gebruikt.

U moet het aanpassen changelogiets in dit geval om aan te geven dat dit pakket een naam heeft hello-debhelper in plaats van alleen Hallo:

hello-debhelper (2.1.1-1) dapper; urgentie = laag * Oorspronkelijke release - Captain Packager Don 6 Apr 2006 10:07:19 -0700

Door het gebruiken van debhelper, de enige dingen waar we in moeten veranderen controle zijn de naam (substitueren Hallo voor hello-debhelper) en toevoegen debhelper (> = 4.0.0) naar de Build-depends veld voor het bronpakket. Het Ubuntu-pakket voor hello-debhelper lijkt op:

Bron: hello-debhelper Sectie: devel Prioriteit: extra Beheerder: Capitan Packager Standards-versie: 3.6.1 Build-Depends: debhelper (> = 4) Pakket: hello-debhelper Architectuur: elke hangt af: $ {shlibs: Depends} Conflicten: hallo Biedt: hallo Vervangt: hallo Beschrijving: De klassieke begroeting en een goed voorbeeld Het GNU hello-programma produceert een bekende, vriendelijke begroeting. Hiermee kunnen niet-programmeurs een klassieke computerwetenschap gebruiken die anders niet beschikbaar zou zijn voor hen. . Maar serieus: dit is een voorbeeld van hoe een Debian-pakket te doen. Het is de Debian-versie van het 'Hello World' -programma van het GNU-project (dat zelf een voorbeeld is voor het GNU-project). . Dit is hetzelfde als het hello-pakket, behalve dat het Deb Helper gebruikt om de deb te maken. Zie debhelper over wat het is.

We kunnen het kopiëren auteursrechten bestand en de postinst en prerm scripts van de Ubuntu hello-debhelper pakket, omdat ze niet zijn veranderd sinds het onderdeel "Packaging From Scratch". We zullen ook het reglement bestand zodat we het kunnen inspecteren.

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.

Het laatste bestand dat we moeten bekijken is reglement, waar de kracht van debhelper scripts kunnen worden gezien. De debhelper versie van reglement is iets kleiner (54 regels in tegenstelling tot 72 regels in de versie van de sectie genaamd "regels").

De debhelper versie lijkt op:

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

touch build binary-indep: install # Er zijn geen architectuur-onafhankelijke bestanden om te uploaden # gegenereerd door dit pakket. Als die er waren, zouden ze hier # worden gemaakt. binary-arch: installeer dh_testdir -a dh_testroot -a dh_installdocs -a NIEUWS 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 binair: binary-indep binary- ARCH.: binaire binaire binaire-indep schone terugslag

Merk op dat taken zoals testen of u zich in de juiste directory bevindt (dh_testdir), zorg ervoor dat u het pakket bouwt met rootprivileges (dh_testroot), documentatie installeren (dh_installdocs en dh_installchangelogs) en opruimen na de build (dh_clean) worden automatisch afgehandeld. Veel pakketten veel ingewikkelder dan Hallo hebben reglement bestanden niet groter omdat de debhelper scripts verwerken de meeste taken. Voor een volledige lijst van debhelper scripts, zie de sectie genaamd "Lijst van debhelper scripts ". Ze zijn ook goed gedocumenteerd in hun respectieve man pagina's. Het is een nuttige oefening om de man-pagina te lezen (ze zijn goed geschreven en niet lang) voor elk helper-script dat in het bovenstaande wordt gebruikt reglement het dossier.