Open Source im professionellen Einsatz

© photocase.com

Debian-Pakete untersuchen und erzeugen

Gut verpackt

Wer seine Geschenke letztes Jahr zu klein fand, der schnürt sich einfach sein eigenes Paket nach dem Debian-Standard. Mit wachsender Anzahl Debian-basierter Distributionen steigt auch die Bedeutung des als besonders komfortabel geltenden Formats.

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.

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.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook