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