Skip to main content

Ubuntu Packaging Guide - Emballasje med Debhelper

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

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

Emballasje med Debhelper

Viktig

Krav: Kravene i seksjonen "Packaging From Scratch", pluss debhelper og dh-make

Som pakker vil du sjelden opprette pakker fra bunnen av som vi har gjort i forrige avsnitt. Som du kan forestille deg, mange av oppgavene og informasjonen i regler Fil, for eksempel, er vanlig for pakker. For å gjøre pakken enklere og mer effektiv, kan du bruke debhelper å hjelpe med disse oppgavene. Debhelper er et sett med Perl-skript (prefiks med dh_) som automatiserer prosessen med pakkebygging. Med disse skriptene blir det ganske enkelt å bygge en Debian-pakke.

I dette eksemplet vil vi igjen bygge GNU Hello-pakken, men denne gangen vil vi sammenligne vårt arbeid med Ubuntu hallo-debhelper pakke. Igjen, opprett en katalog hvor du skal jobbe:

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

Deretter får du Ubuntu-kildepakken:

apt-get kilde hei-debhelper cd ..

Som det forrige eksempelet, må vi pakke opp den opprinnelige (oppstrøms) tarball.

tar -xzvf hallo-2.1.1.tar.gz

I stedet for å kopiere oppstrøms tarball til hello_2.1.1.orig.tar.gz som vi gjorde i det forrige eksempelet, vil vi la dh_make gjør jobben for oss. Det eneste du må gjøre er å gi nytt navn til kildemappen slik at den er i form av - hvor pakkenavn er liten. I dette tilfellet produserer tarball bare en korrekt navngitt kildekatalog slik at vi kan flytte inn i den:

cd hei-2.1.1

For å opprette den første "debianiseringen" av kilden vi skal bruke dh_make.

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

dh_make vil da stille deg en rekke spørsmål:

Type pakke: enkelt binært, flere binære, bibliotek, kjernemodul eller cdbs? S / m / l / k / b s Vedlikeholds navn: Captain Packager E-postadresse: [email protected] Dato: Thu, 6 Apr 2006 10:07:19 -0700 Pakke Navn: Hei Versjon: 2.1.1 Lisens: Blank Type Pakke: Single Hit å bekrefte: Tast inn

Forsiktighet

Kjør bare dh_make -e en gang. Hvis du kjører det igjen etter at du har gjort det første gang, fungerer det ikke riktig. Hvis du vil endre det eller gjøre en feil, fjern kildekatalogen og ta opp oppstrøms tarball på nytt. Deretter kan du overføre til kildekatalogen og prøve igjen.

Løping dh_make -e gjør to ting:

  • Oppretter hello_2.1.1.orig.tar.gz fil i overordnet katalog,
  • Oppretter de grunnleggende filene som trengs i debian / og mange malfiler (.ex) som kan være nødvendig.

De Hallo Programmet er ikke veldig komplisert, og som vi har sett i avsnittet "Packaging From Scratch", pakker det ikke mye mer enn de grunnleggende filene. Derfor, la oss fjerne .ex filer:

cd debian rm * .ex * .EX

Til Hallo, det vil du heller ikke

* Tillatelse

* Ubuntu Packaging Guide Index

trenge README.Debian (README-fil for spesifikke Debian-problemer, ikke programmets README), kataloger (brukt av dh_installdirs å opprette nødvendige kataloger), docs (brukt av dh_installdocs for å installere programdokumentasjon), eller info (brukt av dh_installinfo å installere infofilen) filer i debian katalogen. For mer informasjon om disse filene, se delen "dh_make example files".

På dette punktet bør du bare ha changelog, compat, styre, opphavsrett, og regler filer i debian katalogen. Fra delen "Packaging From Scratch", er den eneste filen som er ny compat, som er en fil som inneholder debhelper versjon (i dette tilfellet 4) som brukes.

Du må justere changeloglitt i dette tilfellet for å gjenspeile at denne pakken er oppkalt hallo-debhelper heller enn bare Hallo:

hei-debhelper (2.1.1-1) dapper; haster = lav * Innledende utgivelse - Captain Packager Tors, 6 apr 2006 10:07:19 -0700

Ved bruk av debhelper, de eneste tingene vi trenger for å forandre seg i styre er navnet (erstatter Hallo til hallo-debhelper) og legge til debhelper (> = 4.0.0) til Build-Depends feltet for kildepakken. Ubuntu-pakken for hallo-debhelper ser ut som:

Kilde: hei-debhelper Seksjon: devel Prioritet: ekstra Vedlikeholder: Capitan Packager Standards-Version: 3.6.1 Build-Depends: debhelper (> = 4) Pakke: hallo-debhelper Arkitektur: noen avhenger: $ {shlibs: Avhenger} Konflikter: hei Gir: hei Ersätter: hallo Beskrivelse: Den klassiske hilsen, og en godt eksempel GNU hei-programmet gir en kjent og vennlig hilsen. Det tillater ikke-programmører å bruke et klassisk datavitenskapsverktøy som ellers ville være utilgjengelig for dem. . Seriøst, skjønt: dette er et eksempel på hvordan du gjør en Debian-pakke. Det er Debian-versjonen av GNU-prosjektets hello world-program (som selv er et eksempel på GNU-prosjektet). . Dette er det samme som hei pakken, bortsett fra det bruker debhelper å gjøre deb. Vennligst se debhelper om hva det er.

Vi kan kopiere opphavsrett fil og postinst og prerm skript fra Ubuntu hallo-debhelper pakke, da de ikke er endret siden avsnittet "Packaging From Scratch". Vi vil også kopiere regler filen slik at vi kan inspisere den.

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 siste filen vi trenger å se på er regler, hvor kraften til debhelper man kan se skript. De debhelper versjon av regler er noe mindre (54 linjer i motsetning til 72 linjer i versjonen fra avsnittet kalt "regler").

De debhelper versjonen ser ut som:

#! / usr / bin / make -f pakke = hei-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 bygge - $ (MAKE) -en distrert installasjon: bygg dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (pakke) / usr mandir = $ (CURDIR) / debian / $ (pakke) / usr / del / mann infodir = $ (CURDIR) / debian / $ (pakke) / usr / share / info install bygge: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binær-indep: install # Det er ingen arkitektur-uavhengige filer som skal lastes opp # generert av denne pakken. Hvis det var noen ville de være # laget her. binærbue: installere dh_testdir -a dh_testroot -a dh_installdocs -a NYHETER 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- bue. PHONY: binær binærbue binær-indep ren sjekk

Legg merke til at oppgaver som testing hvis du er i riktig katalog (dh_testdir), sørg for at du bygger pakken med root-privilegier (dh_testroot), installere dokumentasjon (dh_installdocs og dh_installchangelogs), og rydde opp etter byggingen (dh_clean) håndteres automatisk. Mange pakker er mye mer kompliserte enn Hallo ha regler filer ikke større fordi debhelper Skript håndterer de fleste oppgavene. For en komplett liste over debhelper skript, se avsnittet "Liste over debhelper skript ". De er også godt dokumentert i deres respektive Mann sider. Det er en nyttig øvelse for å lese mannens side (de er velskrevne og ikke lange) for hvert hjelpeskript som brukes i det ovennevnte regler fil.