Skip to main content

Ubuntu Packaging Guide - Förpackning med Debhelper

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

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

Förpackning med Debhelper

Viktig

Krav: Kraven i avsnittet "Packaging From Scratch" plus debhelper och dh-make

Som en förpackning kommer du sällan att skapa paket från början som vi har gjort i föregående avsnitt. Som du kan föreställa dig, många av uppgifterna och informationen i regler Fil, till exempel, är vanliga för paket. För att göra förpackningen enklare och effektivare kan du använda debhelper att hjälpa till med dessa uppgifter. Debhelper är en uppsättning Perl-skript (prefixed with dh_) som automatiserar processen med paketuppbyggnad. Med dessa skript blir det enkelt att bygga ett Debian-paket.

I det här exemplet kommer vi återigen att bygga GNU Hello-paketet, men den här gången kommer vi att jämföra vårt arbete med Ubuntu hello-debhelper paket. Återigen, skapa en katalog där du kommer att arbeta:

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

Ta sedan Ubuntu-källkodspaketet:

apt-get source hej-debhelper cd ..

Som det föregående exemplet är det första som vi behöver göra att packa upp den ursprungliga (uppströms) tarballen.

tjära -xzvf hej-2.1.1.tar.gz

I stället för att kopiera uppströms tarball till hello_2.1.1.orig.tar.gz som vi gjorde i föregående exempel kommer vi att låta dh_make gör jobbet för oss. Det enda du behöver göra är att byta namn på källkatalogen så att den är i form av - där paketnamn är liten. I detta fall producerar tarballen bara en korrekt namngiven källkatalog, så vi kan flytta in i det:

cd hej-2.1.1

För att skapa den första "debianiseringen" av källan vi använder dh_make.

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

dh_make kommer då att fråga dig en rad frågor:

Typ av paket: singel binärt, flera binära, bibliotek, kärnmodul eller cdbs? S / m / l / k / b s Ansvarig namn: Captain Packager E-postadress: [email protected] Datum: Thu, Apr 6, 2006 10:07:19 -0700 Paketnamn: hej Version: 2.1.1 Licens: blank Typ av paket: Single Hit att bekräfta: Stiga på

Varning

Kör bara dh_make -e en gång. Om du kör det igen när du gör det första gången fungerar det inte korrekt. Om du vill ändra det eller göra ett misstag, ta bort källkatalogen och ta bort uppströms tarballen på nytt. Då kan du migrera till källkatalogen och försöka igen.

Löpning dh_make -e gör två saker:

  • Skapar hello_2.1.1.orig.tar.gz filen i moderkatalogen,
  • Skapar de grundläggande filerna som behövs i debian / och många mallfiler (.ex) som kan behövas.

De Hej Programmet är inte särskilt komplicerat, och som vi har sett i avsnittet "Packaging From Scratch", förpackas det inte mycket mer än de grundläggande filerna. Låt oss därför ta bort .ex filer:

cd debian rm * .ex * .EX

För Hej, det kommer du inte heller

* Licens

* Ubuntu Packaging Guide Index

behöver README.Debian (README-fil för specifika Debian-problem, inte programmets README), dirs (Använd av dh_installdirs att skapa nödvändiga kataloger), docs (Använd av dh_installdocs för att installera programdokumentation), eller info (Använd av dh_installinfo för att installera informationsfilen) filer till debian katalogen. Mer information om dessa filer finns i avsnittet "dh_make example files".

Vid denna tidpunkt borde du bara ha changelog, compat, kontrollera, upphovsrätt, och regler filer i debian katalogen. Från avsnittet "Packaging From Scratch" är den enda fil som är ny compat, vilket är en fil som innehåller debhelper version (i detta fall 4) som används.

Du måste justera changelognågot i detta fall för att återspegla att detta paket heter hello-debhelper snarare än bara Hej:

hej-debhelper (2.1.1-1) dapper; brådskande = låg * Initial release - Captain Packager Tis, 6 apr 2006 10:07:19 -0700

Genom att använda debhelper, det enda vi behöver byta i kontrollera är namnet (ersätter Hej för hello-debhelper) och tillsats debhelper (> = 4.0.0) till Build-Depends fält för källkodspaketet. Ubuntu-paketet för hello-debhelper ser ut som:

Källa: Hej-debhelper Avsnitt: Devel Prioritet: Extra Underhåll: Capitan Packager Standards-Version: 3.6.1 Build-Depends: debhelper (> = 4) Paket: Hej-debhelper Arkitektur: Vilket beror: $ {shlibs: Beroende} Konflikter: hej Ger: hej Ersätter: hej Beskrivning: Den klassiska hälsningen och en bra exempel GNU Hello-programmet ger en välbekant och vänlig hälsning. Det gör det möjligt för icke-programmerare att använda ett klassiskt datorvetenskapligt verktyg som annars inte skulle vara tillgängligt för dem. . Allvarligt, men det här är ett exempel på hur man gör ett Debian-paket. Det är Debian-versionen av GNU-projektets hello world-program (vilket är ett exempel för GNU-projektet). . Detta är detsamma som hejpaketet, förutom att det använder debhelper att göra deb. Vänligen se debhelper om vad det är.

Vi kan kopiera upphovsrätt fil och postinst och prerm skript från Ubuntu hello-debhelper paketet, eftersom de inte har ändrats sedan avsnittet "Packaging From Scratch". Vi kommer också att kopiera regler fil så vi kan inspektera 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 sista filen vi behöver titta på är regler, där kraften av debhelper skript kan ses. De debhelper version av regler är något mindre (54 linjer jämfört med 72 linjer i versionen från avsnittet "regler").

De debhelper versionen ser ut som:

#! / usr / bin / make -f paket = 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 bygga - $ (MAKE) -i distclean install: bygg dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (paket) / usr mandir = $ (CURDIR) / debian / $ (paket) / usr / dela / man infodir = $ (CURDIR) / debian / $ (paket) / usr / share / info installera bygg: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binär-indep: installera # Det finns inga arkitekturoberoende filer som ska laddas upp # genereras av detta paket. Om det fanns några skulle de vara # gjorda här. binärbåg: installera dh_testdir -a dh_testroot -a dh_installdocs -a NEWS 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 checkrot

Observera att uppgifter som att testa om du är i rätt katalog (dh_testdir), se till att du bygger paketet med root-privilegier (dh_testroot), installation av dokumentation (dh_installdocs och dh_installchangelogs) och städa upp efter byggnaden (dh_clean) hanteras automatiskt. Många paket mycket mer komplicerade än Hej ha regler filer inte större eftersom debhelper skript hanterar de flesta uppgifterna. För en komplett lista över debhelper skript, se avsnittet "List of debhelper skript ". De är också väl dokumenterade i respektive man sidor. Det är en användbar övning att läsa mansidan (de är välskrivna och inte långa) för varje hjälpteman som används i ovanstående regler fil.