Debian-Pakete bauen

Sauber eingepackt

Es gibt viele gute Gründe, eigene Pakete für die Distribution zu erstellen. Debian, Ubuntu und Co. enthalten alle Werkzeuge, die zum Paketbauen erforderlich sind. Dieser Artikel erklärt die ersten Schritte.
Die Zusammenarbeit im Unternehmen wird immer dynamischer und flexibler. Aus diesem Grund wirft IT-Administrator in der April-Ausgabe einen Blick auf die ... (mehr)

Eine neue Softwareversion besitzt ein dringend benötigtes Feature, liegt aber noch nicht in den Repositorys der eigenen Distribution? Ein Programm muss mit einer ganz bestimmten Option (neu) kompiliert werden, weil die eigene Umgebung danach verlangt? Die firmeninterne Dokumentation soll sauber verpackt für die Mitarbeiter bereitstehen, damit die sie bequem per Paketmanager installieren und aktualisieren können? Wenn Sie ein Debian-basiertes System administrieren und Software selbst paketieren möchten, so finden Sie in diesem Artikel hilfreiche Tipps und Tricks zum Debian-Build-System.

Sie erfahren zunächst etwas zum Inhalt von Debian-Paketen und zu den Werkzeugen, die Sie zum Paketbauen brauchen. Dann zeigt der Workshop, wie Sie ein vorhandenes Debian-Quellpaket herunterladen, auspacken, anpassen und neu bauen. Dabei erfahren Sie auch, wie Sie auf dieser Grundlage eine neuere Version des Pakets erstellen (Backport). Der Artikel zeigt ebenfalls, wie Sie mit den Originalquellen (Upstream) ganz von vorne anfangen, und erklärt dabei die wichtigsten Steuerdateien und Befehle.

Als Testrechner dienten ein Debian-System (8.2, Jessie) und eine Ubuntu-Installation (15.10, Wily Werewolf). Die im Workshop gezeigten Schritte sollten allerdings auch auf anderen Debian-basierten Distributionen funktionieren.

Zwei Paketwelten

Zwei große Paketformate beherrschen die Linux-Welt: Der RPM Package Manager (Pakete enden auf ".rpm") kommt beispielsweise bei Red Hat Enterprise Linux, CentOS, Fedora und openSUSE/SUSE Linux Enterprise zum Einsatz. Die Alternative heißt DPKG (Dateiendung ".deb"), und der Debian Package Manager verwaltet die Software nicht nur unter Debian, sondern auch bei den Derivaten Ubuntu, Linux Mint und Knoppix.

Es gibt zwei Arten von Debian-Paketen: Quell- und Binärpakete. Erstere beziehen Sie unter Debian und Ubuntu aus den Repositorys der Distributionen. Dazu muss in der Datei "/etc/apt/sources.list" die entsprechende "deb-src"-Quelle aktiviert sein, und Sie erhalten das Paket über apt-get source Paket (siehe Abschnitt "Paket aus Debian-Quellen bauen"). De-

bian-Quellpakete bestehen in der Regel aus mehreren Dateien. Neben dem ursprünglichen Tarball (".orig.tar.{gz, bz2,xz}") gibt es die Dateien ".diff.gz" oder "debian.tar.{gz,bz2,xz}", in denen die Änderungen des Paketbetreuers (Maintainer) stehen. Die Datei mit der Endung ".dsc" (Debian Source Control) listet alle Files des Quellpakets zusammen mit den Prüfsummen und zusätzlichen Informationen (Betreuer, Version und so weiter) auf.

Binärpakete tragen die Endung ".deb", zum Beispiel "hello_2.9-1_amd64.deb" oder "hello_2.10-1_amd64.deb". Hinter dem Programmnamen ("hello") steht die Versionsnummer ("2.9-1" beziehungsweise "2.10-1"), die sich wiederum aus der Release- und der Revisionsnummer zusammensetzt. Die Releasenummer ist in diesem Fall "2.9" respektive "2.10" und besteht aus der Hauptversionsnummer (Major Release) "2" und der Nebenversionsnummer (Minor Release) "9" beziehungsweise "10".

Die Debian-Revisionsnummer (hier -1) stammt vom Maintainer und zeigt den Stand des Debian-Pakets an. Vor der Dateiendung befindet sich der Name der Architektur, zum Beispiel "amd64" (AMD und Intel 64-Bit) oder "i386" (32-Bit x86). Pakete, die für alle Architekturen geeignet sind, tragen den Zusatz "_all.deb".

Bild 1: Das Kommando "ar" verrät die Inhalt des Debian-Pakets.
Bild 2: Mit dem "dpkg"-Schalter "--contents" listen Sie den Inhalt einer ".deb"-Datei auf.

Anatomie der Pakete

Wenn Sie ein Debian-Paket mit "file" untersuchen, dann erfahren Sie, dass es sich um ein Binärpaket handelt (Bild 1, oben). Was drin steckt, bringt das Kommando "ar" zum Vorschein, denn Debian-Pakete sind ganz gewöhnliche "ar"-Archive. Die Befehle "ar t" beziehungsweise "ar tv" (für eine ausführliche Ausgabe) zeigen den Inhalt des Archivs an (Bild 1, unten):

- "debian-binary"

- "control.tar.gz"

- "data.tar.xz"

Die Datei "debian-binary" ist obligatorisch und enthält nur eine Zeile. Sie zeigt das verwendete Paketformat (1.0, 2.0 oder 3.0). Das Paketformat 3.0 wurde mit Debian 6.0 ("Squeeze") eingeführt und ist momentan das gebräuchlichste.

Bei "control.tar.gz" handelt es sich um ein Tar.gz-Archiv, das die Kontrolldateien aufnimmt. Aus diesen Daten erhält der Paketmanager DPKG alle benötigten Informationen. Im Archiv sind nur einfache Dateien; Unterverzeichnisse oder Links sind nicht erlaubt. Jedes Paket hat mindestens zwei Kontrolldateien: "control" (Informationen zum Paketnamen, zum Namen des Quellpakets, zur Version, zum Maintainer und zu den Abhängigkeiten, siehe Abschnitt "Kontrolle und Regeln") und "md5sums" (MD5-Prüfsummen für die im Paket enthaltenen Dateien). Optional können dem Archiv Konfigurationsdateien oder Maintainer-Skripte beiliegen. Das sind Shellskripte, die vor oder nach der Installation laufen: "preinst" (vor der Installation), "postinst" (nach der Installation), "prerm" (vor dem Entfernen) und "postrm" (nach dem Entfernen).

"data.tar.xz" enthält die eigentlichen Paketdateien, also die Daten aus "/usr", "/bin", "/lib", "/etc", "/var" und so weiter. Wenn Sie sich für den genauen Inhalt interessieren, rufen Sie den Befehl »dpkg --contents« zusammen mit dem Paketnamen auf (Bild 2). Geben Sie stattdessen » dpkg --info Paket « ein, um die "control"-Datei zu begutachten.

Bild 3: Die Quellpakete liegen in eigenen Repositorys, die mit "deb-src" gekennzeichnet sind. Die "deb"-Einträge gelten nur für die Binärpakete.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023