Wer selbst deb-Pakete schneidern will, bekommt einiges an Hilfe geboten. Dennoch drehen sich die meisten Dokumentationen um den config/make-Prozess, d.h. um bestehende Software, die nach Debian portiert werden soll. Was ist, wenn man es etwas einfacher haben will?

Vorbereitungen

Viel benötigt man eigentlich nicht, um ein Paket zu schnüren. Im einfachsten Fall genügt das Paket dpkg-dev. Wir installieren ein paar mehr Pakete:

dpkg-dev ist ein Sammelpaket, welches andere Pakete gegebenenfalls gleich mitinstalliert, fakeroot erlaubt das Erstellen von Paketen als “falsches” root. Das ist wichtig bei der Paketerstellung, da ansonsten die Rechte womöglich falsch gesetzt wurden. Mit lintian kann man eine Paketeinstellung später prüfen – notwendig ist das nicht unbedingt.

Beispiel: zcode-Games als deb

Ich will ein simples Beispiel nehmen, um zu demonstrieren, wie man Pakete einfach baut: Ich will in diesem Beispiel meine zcode-Spiele aka Textadventures als Debian-Paket erstellen. Diese liegen als binäre Pakete vor und sollen lediglich beim Installationsvorgang in den Ordner /usr/share/games/zcode installiert werden.

Zum Mittesten können die Spiele alle als tar-Archiv heruntergeladen werden: Textadventures Max Kalus (tgz, 432 kb). Diese einfach herunterladen, wir brauchen diese gleich als “Installationsmasse”.

Verzeichnisse

Zuerst erstellen wir die Verzeichnisse, die in einem Paket notwendig sind:

Die Verzeichnisse unterhalb “zcode-games-de-mk-1.0-all” bilden einen Teil des Unix-Dateisystems ab. Hier brauchen wir lediglich den Pfad usr/share/games/zcode, damit die Spiele später in den absoluten Pfad /usr/share/games/zcode kopiert werden.

Das Verzeichnis “zcode-games-de-mk-1.0-all” entspricht den Namenskonventionen für Pakete von Debian, also Paketname-Version-Architektur. In diesem Fall ist die Version 1.0 und “all” steht für alle Architekturen.

Das DEBIAN-Verzeichnis ist ein besonderes Verzeichnis, in das weiter unten Steuerdateien kopiert werden.

Daten kopieren

Als nächstes kopieren wir die zcode-Spiele in das “usr/share/games/zcode/”-Verzeichnis (und löschen das Archiv):

So, damit sind die Daten bereits fertig zum Packen in ein Debian-Archiv.

Steuerdatei erstellen

Was nun noch fehlt, ist die Steuerdatei für das Paket. Diese enthält alle relevaten Informationen zum Paket.

Die meisten Einträge sollten relativ selbsterklärend sein. “Recommends” beschreibt, dass das Paket ein anderes vorschlägt, es gibt ebenfalls die Optionen “Depends” und “Suggests”. Man kann hier mit | angeben, wenn man Alternativen haben will. “Depends: mozilla | netscape” würde z.B. entweder mozilla oder netscape als notwendiges Paket zur Installation ansehen.

“Provides” bedeutet, dass dieses Paket ein meta-Paket bereitstellt. Andere Optionen sind hier u.a. “Conflicts” und “Replaces”. Näheres dazu bei debian selbst…

“Installed-Size” ist die installierte Größe in kb. Diese muss man offenbar selbst ausmessen, eine andere Möglichkeit habe ich bislang noch nicht entdeckt… Dazu kann man z.B. du -k zcode-games-de-mk-1.0-all/usr verwenden.

“Description” kann eine mehrzeilge Beschreibung sein. Die Zeilen nach dem Schlüsselwort müssen eingerückt sein.

Erstellen und Test

Nun sind wir bereit für den Test! Um die Berechtigungen im Paket richtig zu setzen, benutzen wir fakeroot und verwenden dpkg zum Erstellen des Pakets.

Es sollte eine entsprechende Erfolgsmeldung kommen, dass das Paket installiert wurde.

Die Installation kann man wie folgt testen:

So, das wären die Grundlagen. Das Paket ist zum Benutzen schon nicht schlecht, leider fehlen noch einige Dateien, die das Paket komplett Debian-kompatibel machen.

Komplett Debian-tauglich machen

Dazu lassen wir zuerst lintian testen, ob ihm das Paket gefällt:

Die Ausgabe wird einen Fehler bringen:

So, hier fehlt also noch eine gewisse “Schönheitsdatei”. Diese kann man einfach hinzufügen:

Das ist allerdings noch nicht alles. Wenn man lintian noch einmal laufen lässt, wird man darauf aufmerksam gemacht, dass das Changelog fehlt. Dies holen wir natürlich nach:

Ein erneuter Aufruf von fakeroot dpkg -b zcode-games-de-mk-1.0-all und lintian -i zcode-games-de-mk-1.0-all.deb sollte zeigen, dass nun alle wesentlichen Daten erstellt worden sind.

Hier ist die Datei zcode-games-de-mk-1.0-all.deb zum Herunterlagen.