Product SiteDocumentation Site

Kapittel 5. Pakkesystem: Verktøy og grunnleggende prinsipper

5.1. Binærpakkestruktur
5.2. Pakke-metainformasjon
5.2.1. Bekrivelse; control-filen
5.2.2. Oppsettsskript
5.2.3. Sjekksummer, Liste med oppsettfiler, med mere
5.3. Kildepakkens struktur
5.3.1. Format
5.3.2. Bruk i Debian
5.4. Håndtere pakker med dpkg
5.4.1. Installasjon av pakker
5.4.2. Fjerning av pakke
5.4.3. Spørre databasen til dpkg, og inspisere .deb-filer
5.4.4. Loggfilen til dpkg
5.4.5. Støtte for multiarkitektur
5.5. Sameksistens med andre pakkesystemer
Som Debian-systemadministrator vil du rutinemessig håndtere .deb-pakker, siden de inneholder konsistente funksjonelle enheter (programmer, dokumentasjon, etc.), som gjør installasjon og vedlikehold mulig. Det er derfor en god idé å vite hva de er, og hvordan du bruker dem.
Dette kapitlet beskriver strukturen og innholdet av «binær»- og «kilde»-pakker. Førstnevnte er filer, som kan brukes direkte av dpkg, mens sistnevnte inneholder kildekoden, så vel som instruksjoner for bygging av binære pakker.

5.1. Binærpakkestruktur

Pakkeformatet til Debian er utformet slik at innholdet kan pakkes ut i et Unix-system som har de klassiske kommandoene ar, tar, og xz eller noen ganger gzip eller bzip2. Denne tilsynelatende trivielle egenskapen er viktig for å virke på mange plattformer og for gjenoppretting etter alvorlige uhell.
Forestill deg, for eksempel, at du ved en feil har slettet dpkg-programmet, og at du ikke lenger kan installere Debian-pakker. Ettersom selve dpkg er en Debian-pakke virker det hele håpløst ... Heldigvis vet du formatet for pakker, og kan derfor laste ned .deb-filen tilhørende dpkg-pakken, og installere den manuelt (sjekk sidefeltet VERKTØY dpkg, APT, og ar). Hvis, ved et uhell, en eller flere av programmene ar, tar eller gzip/xz/bzip2 har forsvunnet, trenger du bare å en kopi av det manglende programmet fra et annet system (siden hver av disse opererer helt selvstendig, uten avhengigheter). Hvis systemet kneler enda mer, slik at selv disse ikke fungerer (kanskje de mest grunnleggende systembibliotekene mangler?), kan du prøve den statiske versjonen av busybox (fremskaffet fra busybox-static-pakken), som er enda mer selvstendig, og gir delkommandoer som busybox ar, busybox tar og busybox xz.
I tilfelle uhell bør du helst ha sikret deg en sikkerhetskopi av systemet (se Seksjon 9.10, «Sikkerhetskopiering»).
Ta en titt på innholdet i en .deb-fil:
$ ar t dpkg_1.20.9_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$ ar x dpkg_1.20.9_amd64.deb
$ ls
control.tar.gz  data.tar.xz  debian-binary  dpkg_1.20.9_amd64.deb
$ tar tJf data.tar.xz | head -n 16
./
./etc/
./etc/alternatives/
./etc/alternatives/README
./etc/cron.daily/
./etc/cron.daily/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg
./etc/dpkg/dpkg.cfg.d/
./etc/logrotate.d/
./etc/logrotate.d/alternatives
./etc/logrotate.d/dpkg
./sbin/
./sbin/start-stop-daemon
./usr/
./usr/bin/
$ tar tJf control.tar.xz
./
./conffiles
./control
./md5sums
./postrm
$ cat debian-binary
2.0
Som du kan se, inneholder ar-arkivet i en Debian-pakke tre filer:
debian-binary
Dette er en tekstfil som ganske enkelt indikerer versjonen til filformatet til .deb-filpakken. I Debian Bullseye er den fremdeles versjon 2.0.
control.tar.xz
Denne arkivfilen inneholder all tilgjengelig metainformasjon, for eksempel pakkens navn og versjon, samt noen skript som skal kjøres før, under eller etter (av-)installasjon av den. Noe av metainformasjonen gjør det mulig for pakkeadministrasjonsverktøyet å avgjøre om det er mulig å installere eller avinstallere den, for eksempel vurdert opp mot listen over pakker som allerede er på maskinen, og om utsendte filer er endret lokalt.
data.tar.xz, data.tar.bz2, data.tar.gz
Dette arkivet inneholder alle filene som skal pakkes ut fra pakken; Det er her de kjørbare filene, bibliotekene, dokumentasjonen og så videre, er lagret. Pakker kan bruke forskjellige sammenpakkingsformater, i sådant fall vil filen navngis annerledes for xz, bzip2 eller gzip.