Auch ein Debian Paket ( DEB ) wird gewöhnlich aus einem Quellcode-Paket aufgebaut, das dann kompiliert und als Binärpaket gepackt wird. Wiederum werden wir mit den entsprechenden Beispieldateien arbeiten, die wir schon beim RPM-Paketformat benutzt haben:
- hallo.c
Der C-Quellcode des Programms - Makefile
Das Makefile für das Programm mit den Regeln all und install. - README
Eine (sehr spärliche) Dokumentation
Wir erstellen aber zunächst nur ein Verzeichnis, das diese Dateien enthält und den Namen (mit Versionsnummer) des Programms enthält. Für unser Beispiel wird das also das Verzeichnis hallo-1.0.0 sein. Alle drei Dateien (hallo.c, Makefile und README) liegen in diesem Verzeichnis. Nach einem Wechsel in dieses Verzeichnis rufen wir jetzt den Befehl
dh_make
auf. Dabei wird zunächst die Frage gestellt, ob dieses Paket ein einzelnes Binärprogramm (single binary), mehrere Binärprogramme (multiple binary) oder eine Library enthält.
Type of package: single binary, multiple binary, or library? [s/m/l]
Wir antworten hier natürlich mit s für Single Binary. Jetzt zeigt uns das Programm die errechneten Einstellungen:
Maintainer name : werauchimmer Email-Address : werauchimmer@irgendwo Date : Mon, 25 Mar 2002 16:52:35 +0100 Package Name : hallo Version : 1.0.0 Type of Package : Single Hit <enter> to confirm:
Nachdem wir das mit Enter bestätigt haben gibt dh_make noch folgende Meldung aus:
Done. Please edit the files in the debian/ subdirectory now. You should also check that the hallo Makefiles install into $DESTDIR and not in / .
Nach dieser Meldung ist das Programm beendet. Es hat aber jetzt ein Unterverzeichnis debian erstellt, in dem sich die Vorlagen (Templates) für die Paketerstellung befinden. Wir müssen jetzt in diesem Verzeichnis verschiedene Anpassungen vornehmen, die für den weiteren Verlauf wichtig sind.
Außerdem weist uns dh_make darauf hin, dass wir unser Makefile entsprechend manipulieren sollten, damit das Programm nach $DESTDIR installiert wird, statt an eine beliebige andere Stelle. Das liegt daran, dass Debian eine sehr klare Definition hat, wohin Binärdateien installiert werden sollen. Wir ändern also das Makefile entsprechend folgendermaßen:
install: cp hallo $(DESTDIR)
Im Verzeichnis debian müssen wir jetzt die entsprechenden Dateien anpassen. Die wichtigsten sind dabei:
- README.Debian
Diese Datei enthält Hinweise, die beschreiben, welche Änderungen an diesem Paket vorgenommen wurden, damit es für Debian funktioniert. Wenn keine Änderungen notwendig waren können wir die Datei einfach löschen. Für unser einfaches Beispiel können wir das bedenkenlos tun. - copyright
Hier sollten wir mindestens unseren Namen und die verwendete Lizenz angeben, also etwas in der Art: This package was debianized by Florian Kalhammer ( † 2015 ) on Mon, 25 Mar 2002 16:52:35 +0100. Copyright: This code is released under the terms of the GPL license. See /usr/share/common-licenses/GPL for the full license. Wenn das Paket von anderen Autoren ist, sollten wir auch noch die Orginal-Quelle (FTP-Server) und die Adresse des Autors angeben. - control
Diese Datei enthält Informationen über das Programm, seinen Autor, die Sektion und die Priorität des Paketes. Zudem enthält es eine Kurzbeschreibung und eine längere Beschreibung (die mit einem Leerzeichen in jeder Zeile beginnt): Source: hallo Section: utils Priority: optional Maintainer: Florian Kalhammer ( † 2015 ) Build-Depends: debhelper (>> 3.0.0) Standards-Version: 3.5.2 Package: hallo Architecture: any Depends: ${shlibs:Depends} Description: A simple hello word programm. This is a simple example for the building process of debian packages. It contains one simple binary hello world programm which is mostly worthless for any user. - rules
Diese Datei ist sozusagen die Aufbauanleitung für das Paket. Im Wesentlichen entspricht sie der SPEC-Datei der RPM-Pakete. Auch hier sind entsprechende Sektionen für das Kompilieren, Installieren und Aufräumen vorhanden. Die einfache Voreinstellung ist hier einsehbar. - menu
In dieser Datei kann ein Menüeintrag für die verschiedenen Window-Manager vorgenommen werden, was in unserem Beispiel natürlich nicht nötig ist. Ein eventuell gewünschtes Icon wird hier auch angegeben. - postinst, preinst, postrm, prerm
Diese vier Dateien enthalten – analog zu den RPM-Paketen – die vier Scripts, die vor und nach der Installation bzw. vor und nach der Deinstallation abgearbeitet werden sollen.
Nachdem diese Dateien angepasst wurden wechseln wir zurück in das Verzeichnis, das den Quellcode enthält und geben den Befehl
dpkg-buildpackage
ein. Wenn alles geklappt hat, sollten im darüberliegenden Verzeichnis die folgenden Dateien erstellt worden sein:
- hallo_1.0.0-1_i386.deb
Das eigentliche Debian-Paket - hallo_1.0.0-1.diff.gz
Die gemachten Veränderungen als Patches - hallo_1.0.0.orig.tar.gz
Das Orginal als Tar-Archiv - hallo_1.0.0-1_i386.changes
Eine Beschreibung des Paketes und der vorgenommenen Arbeiten - hallo_1.0.0-1.dsc
Jetzt kann das Paket wieder einfach mit dpkg -i hallo_1.0.0-1_i386.deb installiert werden.