Ob auf dem Desktop-PC oder dem stark beanspruchten Serversystem: Bei Administratoren jeder Couleur hat das Debian-Paketmanagement DPKG einen guten Ruf. Denn auch ohne intime Kenntnis des Formats installieren, aktualisieren und entfernen sie damit Programme inklusive komplexer Abhängigkeiten mit nur einem »apt-get«-Aufruf.
Doch nicht für jeden Bedarf findet sich ein fertiges Deb-Archiv. Triviale Pakete, wie sie beispielsweise Checkinstall erzeugt, helfen zwar später bei der Deinstallation, doch wer Abhängigkeiten berücksichtigen oder eigene Pakete auf mehreren Rechnern installieren möchte, benötigt korrekt gebaute Deb-Dateien.
Aufbau
Ein Debian-Paket ist zunächst nichts anderes als ein AR-Archiv. Dieses Archivierungssystem gehört zu den Binutils und damit zu jeder Linux-Installation. Dass Debian dieses Format verwendet, ermöglicht den Zugriff auf die Paketdateien mit praktisch jedem Unix-System. Das Archiv enthält mindestens drei Dateien (siehe Abbildung 1):
- »debian-binary«
- »control.tar.gz«
- »data.tar.gz«
Das Paketverwaltungssystem stellt zunächst fest, ob die Datei »debian-binary« existiert, bevor es das Paket bearbeitet. Obwohl sie bislang lediglich aus einer Zeile besteht, die die Versionsnummer des Deb-Formats angibt, ist »debian-binary« obligatorisch. Seit 1995 hat sie sich in puncto Inhalt und Aufbau nicht mehr verändert und lautet stets »2.0«.
Bei »control.tar.gz« handelt es sich um ein gewöhnliches mit Gzip komprimiertes Tar-Archiv. Aus den darin enthaltenen Metadaten bezieht das Paketwerkzeug DPKG alle über das Paket benötigten Informationen. Im Archiv sind weder Unterverzeichnisse noch Links oder andere Spezialdateien, sondern ausschließlich herkömmliche Dateien erlaubt.
Abbildung 1: Bei einem Debian-Paket handelt es sich um ein AR-Archiv, das fest definierte Dateien enthält. Darin stehen neben den komprimierten Programmdateien selbst auch alle Paketinformationen.
Als einzigen zwingenden Eintrag enthält es eine Datei namens »control« in einem Debian-eigenen Format (siehe Kasten "Control-Format"). Aus ihrem Inhalt entsteht unter anderem der zum jeweiligen Paket gehörige Eintrag in der Liste verfügbarer Software in der systemweiten Datei »Packages«.
Auch alle anderen Informationen, die die Paketverwaltung vor der Installation benötigt, stehen in der Datei »control«. Die vorgeschriebenen Felder heißen »Package«, »Version«, »Description« und »Maintainer«. Sie geben Auskunft über Namen und Version der enthaltenen Software sowie eine Beschreibung. Das Feld für den Paketbetreuer enthält dessen Namen und E-Mail-Adresse. Darüber hinaus sind neben »Architecture«, »Priority« und »Section« noch »Depends« und andere Informationen über Abhängigkeiten von oder Konflikte mit weiteren Softwarepaketen üblich.
Eine Policy für alle
Das Format der einzelnen Felder beschreibt die Debian-Policy [1]. Dieses Dokument bezieht sich zwar speziell auf die Distribution Debian, gilt jedoch in puncto Paketbeschreibung für alle Debian-basierten Linux-Varianten. Optional enthält das Archiv »control.tar.gz« auch beispielsweise folgende Dateien:
-
»conffiles«: Führt Dateien auf, die DPKG als
Konfigurationsdateien behandeln soll. Diese überschreibt es
bei einem Upgrade nicht automatisch, es sei denn, sie sind ohnehin
identisch.
-
»preinst«, »postinst«,
»prerm« und »postrm«: Die so genannten
Maintainer-Skripte sind ausführbare Dateien, die DPKG vor und
nach der Installation beziehungsweise Deinstallation von Paketen
aufruft. Sie eignen sich vor allem zum Registrieren und Entfernen
systemweiter Einträge: Menüpunkte behandelt der Aufruf
von »update-menus«, um Info-Dateien kümmert sich
»install-info« und um Standardprogramme wie
Texteditoren »update-alternatives«. Auch zum Erstellen
System- oder Benutzer-abhängiger Konfigurationsdateien mit
Debconf oder UCF dienen die Maintainer-Skripte. Ausführliche
Informationen darüber gibt [2].
-
»config« und »templates«: Debconf
verwendet diese Dateien, um während der Installation vom
Benutzer Informationen zu erfragen. »config« ist eine
ausführbare Datei, »templates« entspricht dem
Control-Format.
-
»md5sums«: Eine Liste mit MD5-Prüfsummen der
im Paket enthaltenen Dateien. Damit überprüft
beispielsweise Debsums die Integrität eines installierten
Pakets.
-
»shlibs«: Informationen über im Paket
enthaltene Shared Libraries, aus deren
Abhängigkeitsinformationen andere Pakete eigene Dependencies
automatisch ableiten können [3].
Kopien aller im Archiv »control.tar.gz« enthaltenen Dateien speichert die Paketverwaltung bei der Installation unter »/var/lib/dpkg/info/ Paketname.Dateiname«. Einzige Ausnahme bildet der Inhalt der »control«-Datei: Er landet in der zentralen Paketdatenbank »/var/lib/dpkg/status«.
Bei »data.tar.gz« handelt es sich um ein weiteres komprimiertes Tar-Archiv. Es enthält die Programmdateien, DPKG entpackt seinen Inhalt bei der Installation in das Wurzelverzeichnis des Systems. Nur bei den mit einem »conffiles«-Eintrag als Konfigurationsdateien beschriebenen Inhalten gilt die weiter oben beschriebene Ausnahme.
Vor dem Entpacken trifft DPKG jedoch einige Vorsichtsmaßnahmen. So überprüft es, ob dabei bereits vorhandene Dateien überschrieben würden, und im Falle eines Upgrade legt es von jeder Datei der alten Paketversion eine Sicherheitskopie an, um damit den Vorgang im Falle eines Abbruchs rückgängig zu machen.