Auch ein Debian Paket 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 <f.kalhammer@online.de> 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 <f.kalhammer@online.de> 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.