Product SiteDocumentation Site

Kapitel 5. Packeteringssystem: Verktyg och Fundamentala Principer

5.1. Struktur av ett binär paket
5.2. Pakets Metainformation
5.2.1. Beskrivning: control filen
5.2.2. Konfiguration Scripts
5.2.3. Checksums, List of Configuration Files, et al.
5.3. Ett Källpakets struktur
5.3.1. Format
5.3.2. Användning inom Debian
5.4. Manipulera paket med dpkg
5.4.1. Installerar paket
5.4.2. Borttagning av Paket
5.4.3. Undersöka dpkg's databas och inspektera .deb filer
5.4.4. dpkg's loggfil
5.4.5. Support för Multi-Instruktionsuppsättning
5.5. Samexistens med andra paketeringsingssystem
I egenskap av en Debian systemadministratör kommer du regelbundet hantera paket med filändelsen .deb, efterssom de innehåller sammanhängande funktionella enheter (applikationer, dokumentation och så vidare) vars installation och underhållning möjliggörs tack vare paketen. Det är därför en bra idè att känna till vad de är och hur de skall användas.
Detta kapitel beskriver strukturen och innehållet av "binära-" och "källkods-paket". Det förstnämnda är filer som kan användas direkt av dpkg, den sistnämnda innehåller källkoden så väl som instruktioner hur dess binära paket skall byggas.

5.1. Struktur av ett binär paket

Debians format på paket är designad på så vis att dess innehåll kan bli extraherad på samtliga Unixbaserade system som innehar de klassiska kommandona ar, tar och xz eller ibland gzip eller bzip2. Denna till synes triviala egenskap är viktig för portabiliteten samt för återställning i händelse av olycka.
Föreställ dig som exempel att du av misstag skulle råka ta bort programmet dpkg och således inte skulle kunna instalera nya Debian paket. Med tanke på att dpkg själv är ett paket skulle man kunna tro att systemet är uträknat. Lyckligtvis känner du dock till formatet på ett paket och kan sålunda ladda ner .deb-filen för paketet dpkg och installera det manuellt (se sidovyn VERKTYGdpkg,APT och ar). Om det skulle hända sig att en eller flera av programmen ar, tar eller gzip/xz/bzip2 har försvunnit, behöver du bara kopiera det saknade programmet från ett annat system (eftersom varje av dessa fungerar på ett helt självstyrande sätt utan några beroenden så är kopiering av filerna ifråga det enda som behövs). Om ditt system drabbats av ytterligare katastrofal olycka och inte ens dessa verktyg fungerar (kanske något av systemets mest grundläggande bibliotek saknas?) skulle du kunna testa den statiska versionen av busybox (som tillhandahålls av paketet busybox-static), vilket är i ännu större grad självisolerad och tillhandahåller kommandon som busybox ar, busybox tar och busybox xz.
I händelse av en olyckshändelse är det också bra att ha en återställningskopia på ditt system (se Avsnitt 9.10, ”Säkerhetskopia”).
Ta en titt på innehållet 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 består ar arkivet av ett Debianpaket av tre filer:
debian-binary
This is a text file which simply indicates the version of the .deb file package format version. In Debian Bullseye it is still version 2.0.
control.tar.xz
Denna arkivfil innehåller all tillgänglig metainformation, så som namn och version på paketet så väl som några skript som skall köras innan, under eller efter (av-)installation av paketet. En del av metainformationen möjliggör för packeteringsverktygen att avgöra om det är möjligt att installera eller avinstallera paketet, exempelvis i enlighet med listan över redan installerade paket på datorn, samt om filer som skickats har modifierats lokalt.
data.tar.xz, data.tar.bz2, data.tar.gz
Detta arkiv innehåller alla de filer som skall extraheras från paketet; det är här alla körbara filer, bibliotek, dokumentation, och så vidare, förvaras. Paket kan använda olika komprimeringsformat, vilket gör att filen får olika namn för xz, bzip2 eller gzip.