Skip to main content

Ubuntu Packaging Guide - Emballage med Debhelper

How to Create .deb Packages for Debian, Ubuntu and Linux Mint (Juni 2026)

How to Create .deb Packages for Debian, Ubuntu and Linux Mint (Juni 2026)

Indholdsfortegnelse:

Anonim

Emballage med Debhelper

Vigtig

Krav: Kravene i afsnittet "Packaging From Scratch" plus debhelper og dh-make

Som pakker vil du sjældent oprette pakker fra bunden som vi har gjort i det foregående afsnit. Som du kan forestille dig, mange af opgaverne og oplysningerne i regler Fil, for eksempel, er fælles for pakker. For at gøre emballagen nemmere og mere effektiv, kan du bruge debhelper at hjælpe med disse opgaver. Debhelper er et sæt Perl-scripts (præfikset med dh_), der automatiserer processen med pakkeopbygning. Med disse scripts bliver det helt simpelt at opbygge en Debian-pakke.

I dette eksempel vil vi igen bygge GNU Hello-pakken, men denne gang vil vi sammenligne vores arbejde med Ubuntu hej-debhelper pakke. Igen opretter du en mappe, hvor du vil arbejde:

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

Så få Ubuntu source pakken:

apt-get source hej-debhelper cd ..

Som det forrige eksempel er det første, vi skal gøre, at pakke den oprindelige (opstrøms) tarball.

tjære -xzvf hallo-2.1.1.tar.gz

I stedet for at kopiere upstream tarball til hello_2.1.1.orig.tar.gz som vi gjorde i det foregående eksempel, vil vi lade dh_make gør arbejdet for os. Det eneste du skal gøre er at omdøbe kildemappen, så den er i form af - hvor pakkenavn er små bogstaver. I dette tilfælde producerer Tarball bare en korrekt navngivet kildemappe, så vi kan flytte ind i det:

cd hej-2.1.1

For at oprette den oprindelige "debianization" af kilden, vil vi bruge dh_make.

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

dh_make vil så stille dig en række spørgsmål:

Type pakke: enkelt binært, multiple binære, bibliotek, kernemodul eller cdbs? S / m / l / k / b s Vedligeholdelses navn: Captain Packager E-mail-adresse: [email protected] Dato: Thu, 6 Apr 2006 10:07:19 -0700 Pakke navn: Hej Version: 2.1.1 Licens: Blank Pakke Type: Single Hit at bekræfte: Gå ind

Advarsel

Kør kun dh_make -e enkelt gang. Hvis du kører det igen, når du gør det første gang, fungerer det ikke korrekt. Hvis du vil ændre det eller begå en fejl, skal du fjerne kildekatalogen og oprettere den opadgående tarball igen. Derefter kan du overføre til kildemappen og prøve igen.

Løb dh_make -e gør to ting:

  • Opretter hello_2.1.1.orig.tar.gz fil i overordnet mappe,
  • Opretter de basale filer, der er nødvendige i debian / og mange skabelonfiler (.ex), der kan være nødvendige.

Det Hej Programmet er ikke meget kompliceret, og som vi har set i afsnittet "Packaging From Scratch", pakker det ikke meget mere end de grundlæggende filer. Lad os derfor fjerne .ex filer:

cd debian rm * .ex * .EX

Til Hej, det vil du heller ikke

* Licens

* Ubuntu Packaging Guide Index

brug for README.Debian (README-fil til specifikke Debian-problemer, ikke programmets README), dirs (brugt af dh_installdirs at oprette nødvendige mapper) docs (brugt af dh_installdocs at installere programdokumentation), eller info (brugt af dh_installinfo for at installere infofilen) filer i Debian vejviser. For mere information om disse filer, se afsnittet "dh_make example files".

På dette tidspunkt bør du kun have changelog, compat, kontrollere, ophavsret, og regler filer i Debian vejviser. Fra afsnittet "Packaging From Scratch" er den eneste fil der er ny compat, som er en fil, der indeholder debhelper version (i dette tilfælde 4), der bruges.

Du bliver nødt til at justere changeloglidt i dette tilfælde for at afspejle, at denne pakke er opkaldt hej-debhelper snarere end bare Hej:

hej-debhelper (2.1.1-1) dapper; uopsættelighed = lav * Indledende frigivelse - Kaptajnemballager Tors, 6 Apr 2006 10:07:19 -0700

Ved hjælp af debhelper, de eneste ting, vi skal ændre i kontrollere er navnet (erstatter Hej til hej-debhelper) og tilføje debhelper (> = 4.0.0) til Build-Depends feltet til kildepakken. Ubuntu pakken til hej-debhelper ligner:

Kilde: hej-debhelper Sektion: devel Prioritet: ekstra Vedligeholder: Capitan Packager Standards-Version: 3.6.1 Build-Depends: debhelper (> = 4) Pakke: hello-debhelper Arkitektur: ethvert afhænger: $ {shlibs: Afhænger} Konflikter: hej Tilbyder: hej Erstatter: hej Beskrivelse: Den klassiske hilsen og en godt eksempel GNU hej programmet frembringer en velkendt og venlig hilsen. Det giver ikke-programmører mulighed for at bruge et klassisk computervidenskabsværktøj, som ellers ville være utilgængeligt for dem. . Alvorligt, selvom: dette er et eksempel på, hvordan man laver en Debian-pakke. Det er Debian-versionen af ​​GNU-projektets "hello world" -program (som selv er et eksempel på GNU-projektet). . Dette er det samme som hello pakken, medmindre det bruger debhelper at lave deb. Se venligst debhelper om, hvad det er.

Vi kan kopiere ophavsret fil og postinst og prerm scripts fra Ubuntu hej-debhelper pakke, da de ikke er ændret siden afsnittet "Packaging From Scratch". Vi vil også kopiere regler fil, så vi kan inspicere det.

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.

Den sidste fil vi skal se på er regler, hvor kraften af debhelper scripts kan ses. Det debhelper version af regler er noget mindre (54 linjer i modsætning til 72 linjer i versionen fra afsnittet "regler").

Det debhelper versionen ser ud som:

#! / usr / bin / make -f pakke = hej-debhelper CC = gcc CFLAGS = -g -Val ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 ren : dh_testdir dh_clean rm -f build - $ (MAKE) - en distraktisk installation: build dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (pakke) / usr mandir = $ (CURDIR) / debian / $ (pakke) / usr / share / man infodir = $ (CURDIR) / debian / $ (pakke) / usr / share / info install bygge: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binær-indep: installer # Der er ingen arkitektoniske uafhængige filer, der skal uploades # genereret af denne pakke. Hvis der var nogen, ville de være # lavet her. binære-arch: installere dh_testdir -a dh_testroot -a dh_installdocs -a NYHEDER 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ær: binær-indep binær- arch .PHONY: binær binær-arch binær-indep ren checkroot

Bemærk, at opgaver som test, hvis du er i det rigtige bibliotek (dh_testdir), så du sørger for at opbygge pakken med rodrettigheder (dh_testroot), installation af dokumentation (dh_installdocs og dh_installchangelogs) og rydde op efter bygningen (dh_clean) håndteres automatisk. Mange pakker er meget mere komplicerede end Hej har regler filer ikke større fordi debhelper scripts håndterer de fleste opgaver. For en komplet liste over debhelper scripts, se afsnittet "List of debhelper scripts ". De er også veldokumenterede i deres respektive mand sider. Det er en nyttig øvelse at læse mandsiden (de er velskrevne og ikke lange) for hvert hjælpescript, der anvendes i ovenstående regler fil.