Introduktion til at bygge Debianpakker

Den 18. april 2002 afholdte SSLUG en aften om at lave rpm-pakker og deb-pakker. Jeg stod for dele om deb-pakker.


Om Debian (source)pakker

helloworld_0.9.orig.tar.gz
Upstreamversionen
helloworld_0.9-5.diff.gz
Debian specifikke rettelser til kildeteksten inklusive debian/
helloworld_0.9-5.dsc
Metainformation om sourcepakken, inkluderer md5summer af ovenstående filer (denne fil er gerne signeret)
helloworld_0.9-5_s390.deb
Den færdige binærpakke
helloworld_0.9-5_s390.changes
Metainformation om resultatet af pakkebyggeriet, inkluderer md5summer af all e filer der skal uploades. (denne fil er gerne signeret)

Overblik over debian/

Dette katalog indeholder information om selve pakken. Svare stort set til RPM's spec-fil.

Indeholder som minimum filerne:


debian/changelog og debian/copyright

changelog-filen indeholder ændringer vedrørende pakken. Semistandardiseret format giver mulighed for at se hvem der har lavet de enkelte versioner af pakken, hvornår og hvilke fejlrapporteringer der er rettet.

copyright-filen *bør* ud over licensen for programmet indeholde oplysninger om hvem der har arbejdet på pakken og hvor den originale source er hentet fra. Ikke i et standardiseret parse-bart format.


debian/control

Denne fil indeholder metainformation om pakken. Formatet ligner RFC822-headers.

Der er et afsnit om sourcepakken og pakken generelt samt et afsnit om hver binærpakke som bliver dannet fra sourcepakken.

Første afsnit indeholder blandt andet følgende information:

Om hver binærpakke gemmes blandt andet følgende information:

(det kan lade sig gøre automatisk at finde ud af de fleste nødvendige afhængigheder)


debian/rules

Selve beskrivelsen af hvordan pakken skal bygges. Er egentligt bare en Makefile med en række specielle targets.

(Så vis det dog!)


Instalationsscripts

Debianpakker kan have 4 scripts der bliver kaldt under installation:

Uder opgradering kaldes først den gamle pakkes prerm, den nye pakkes preinst og endelig den nye pakkes postinst.

Scriptene bliver kaldt med hvad pakkesystemet er igang med og relevatne versionsnumre. Det kan godt virke meget mystisk og meget sort. (især ved backtracking efter fejl)


debhelper og dh_make

Mange af opgaverne i debian/rules kan generaliseres. En af programpakkerne til dette er debhelper der består af en masse scripts der laver standardopgaver under byggeprocessen.

Andre ligende værktøjerspakker er yada og dbs, men debhelper er langt det mest udbredte.

Programmet dh_make tager en upstream source-pakke og laver et passende debian/ der bruger debhelper. Programmer der configureres med autoconf kan pakker næsten laves automatisk.


debconf

debconf giver en standardiseret måde at stille spørgsmål eller skrive beskeder til brugeren før eller under installation

debconf giver blandtandet mulighed for at preconfigurerer en masse pakker samtidigt inden hver pakke enkeltvis bliver installeret. Desuden giver det en konsistent grænseflade til brugeren.

Skal man kommunikere med brugeren under installation bør man bruge debconf.


Den store finale...

Når alt dette er lave kan man bygge en pakke. Man stiller sig i topkataloget af sourcen og skriver:

dpkg-buildpackage -rfakeroot

Hvis man ikke er intereseret i at signere dsc-filen og changes-filen tilføjer man flagene -us -uc

Hvis man vil lave specielle versioner af eksisterende debianpakker kan man he nte sourcepakken ned med apt-get:

apt-get source <pakke-navn>

Man kan automatisk få installeret alle pakker der er nødvendige for at oversæ tte en given pakke:

apt-get build-dep <pakke-navn>


Mere information

Developers References
http://www.debian. org/doc/developers-reference/
/usr/share/doc/developers-reference (fra pakken developers-referenc e)
Debian Policy
http://www.debian.org/doc /debian-policy/
/usr/share/doc/debian-policy (fra pakken debian-policy)
New Maintainers Guide
http://www.debian.org/doc/m aint-guide/
Peter Makholm, peter@makholm.net