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.
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
.
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
.