Als Debian-Systemadministrator werden Sie regelmäßig mit .deb
-Paketen umgehen, da sie festgelegte funktionale Einheiten (Anwendungen, Dokumentation usw.) enthalten, deren Installation und Wartung sie vereinfachen. Deshalb ist es gut zu wissen, was sie sind und wie man sie benutzt.
Dieses Kapitel beschreibt die Struktur und den Inhalt von „Binär“- und „Quell“-Paketen. Erstere sind .deb
-Dateien, die direkt mit dem Befehl dpkg
benutzt werden können, während letztere den Programm-Quellcode sowie Anweisungen zum Bau von Binärpaketen enthalten.
5.1. Struktur eines Binärpakets
Das Debian-Paketformat ist so gestaltet, dass sein Inhalt auf jedem Unixsystem entpackt werden kann, das über die klassischen Befehle ar
, tar
und gzip
(manchmal auch xz
oder bzip2
) verfügt. Diese eigentlich triviale Anforderung ist wichtig für die Portierbarkeit und Wiederherstellung.
Nehmen Sie zum Beispiel an, dass Sie aus Versehen das Programm
dpkg
gelöscht haben, und dass Sie daher keine Debian-Pakete mehr installieren können. Da
dpkg
selbst ein Debian-Paket ist, sieht es so aus, als ob ihr System erledigt sei... Zum Glück kennen Sie das Format eines Pakets und können daher die
.deb
-Datei des
dpkg-Pakets herunterladen und es manuell installieren (siehe Seitenleiste
HILFSPROGRAMME dpkg
, APT
und ar
). Wenn durch ein Missgeschick eines oder mehrere der Programme
ar
,
tar
oder
gzip
/
xz
/
bzip2
verschwunden sind, brauchen Sie nur das fehlende Programm von einem anderen System zu kopieren (da jedes von ihnen auf vollständig autonome Weise ohne Abhängigkeiten arbeitet, reicht einfaches Kopieren).
Werfen Sie einen Blick auf den Inhalt einer .deb
-Datei:
$
ar t dpkg_1.17.23_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$
ar x dpkg_1.17.23_amd64.deb
$
ls
control.tar.gz data.tar.gz debian-binary dpkg_1.17.23_amd64.deb
$
tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/parts/
./var/lib/dpkg/info/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/updates/
./etc/
./etc/logrotate.d/
./etc/logrotate.d/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg.d/
./etc/dpkg/dpkg.cfg
./etc/alternatives/
$
tar tzf control.tar.gz
./
./conffiles
./postinst
./md5sums
./prerm
./preinst
./control
./postrm
$
cat debian-binary
2.0
Wie Sie sehen, besteht das ar
-Archiv eines Debian-Pakets aus drei Dateien:
debian-binary
. Dies ist eine Textdatei, die lediglich die Version der verwendeten .deb
-Datei angibt (2015: Version 2.0).
control.tar.gz
. Diese Archivdatei enthält alle verfügbaren Meta-Informationen, wie Name und die Version des Paketes. Teile dieser Meta-Information ermöglicht es Paket-Management-Werkzeugen festzustellen, ob die enthaltenen Programme, zum Beispiel unter Beachtung der Liste der bereits auf dem Gerät installierten Pakete, installiert oder deinstalliert werden können.
data.tar.gz
. Dieses Archiv enthält alle Dateien, die aus dem Paket entpackt werden sollen; hier sind die ausführbaren Dateien, die Dokumentation usw. gespeichert. Möglicherweise verwenden einige Pakete andere Komprimierungsformate, wobei die Datei dann anders heißt (data.tar.bz2
für bzip2, data.tar.xz
für XZ).