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, og så videre), 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.
Imagine, for example, that you mistakenly deleted the dpkg program, and that you could thus no longer install Debian packages. dpkg being a Debian package itself, it would seem your system would be done for... Fortunately, you know the format of a package and can therefore download the .deb file of the dpkg package and install it manually (see sidebar VERKTØY dpkg, APT, og ar). If by some misfortune one or more of the programs ar, tar or gzip/xz/bzip2 have disappeared, you will only need to copy the missing program from another system (since each of these operates in a completely autonomous manner, without dependencies, a simple copy will suffice). If your system suffered some even more outrageous misfortune, and even these don't work (maybe the deepest system libraries are missing?), you should try the static version of busybox (provided in the busybox-static package), which is even more self-contained, and provides subcommands such as busybox ar, busybox tar and busybox xz.
In case of a misfortune, you better also have a backup of your system (see Seksjon 9.10, «Sikkerhetskopiering»).
Ta en titt på innholdet i en .deb-fil:
$ ar t dpkg_1.21.22_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$ ar x dpkg_1.21.22_amd64.deb
$ ls
control.tar.gz  data.tar.xz  debian-binary  dpkg_1.21.22_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
./lib/
./lib/systemd/
./lib/systemd/system/
./lib/systemd/system/dpkg-db-backup.service
$ tar tJf control.tar.xz
./
./conffiles
./control
./md5sums
./postinst
./postrm
./prerm
$ cat debian-binary
2.0
Som du kan se, inneholder ar-arkivet i en Debian-pakke tre filer:
debian-binary
This is a text file which simply indicates the version of the .deb file package format version. In Debian Bookworm it is still version 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.