dh make
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Anmerkung: Migration in Grundlagen der Paketerstellung
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
dh-make stellt eine mächtige Möglichkeit dar, Ubuntu-Pakete zu erstellen.
Einleitung¶
Die Sourcen eines jeden .deb-Paketes enthalten einen Ordner namens debian. In diesem Ordner liegen die Daten, die benötigt werden, um das Paket zu erstellen. Dabei ist völlig egal, ob der Inhalt des Paketes Sourcen, oder Binär-Dateien sind. Die Regeln in debian beschreiben ganz allgemein, wie das Paket auf dem System zu installieren ist.
Installation¶
Für diese Anleitung sollte das Paket
dh-make
Befehl zum Installieren der Pakete:
sudo apt-get install dh-make
Oder mit apturl installieren, Link: apt://dh-make
installiert sein [1].
dh-make¶
Zunächst wird in einem Terminal [2] in das Verzeichnis mit den Quelldaten gewechselt. Dabei ist wichtig, dass dieses Verzeichnis einen Namen in der Form <Paketname>-<Paketversion> trägt, zum Beispiel in etwa so:
cd Pakete/genial-1.00/
dh-make versucht, aus den Daten im aktuellen Verzeichnis die Informationen, die für das Paket benötigt werden, zu erstellen. Befindet man sich also bereits im Ordner mit den Quelldaten, so lässt sich der Prozess der Paketerstellung durch ein einfaches
dh_make
starten.
Danach werden einige Infos zum Ersteller und dem Paket erfragt:
Type of package: single binary, multiple binary, library, or kernel module? [s/m/l/k] Maintainer name : Vorname Nachname Email-Address : E-Mail Adresse Date : Datum und Uhrzeit Package Name : Paketname Version : Paketversion License : Lizenz Type of Package : Typ der oben angegeben wurde Hit <enter> to confirm:
Die Dateien unter der Lupe¶
README.Debian¶
Die Datei README.Debian enthält Informationen zu den Besonderheiten dieses Debian-Pakets. Wenn Veränderungen oder Ergänzungen gegenüber dem Source-Paket vorgenommen werden, so sollten diese hier vermerkt werden. Darauf achten, in der letzten Zeile die E-Mail-Adresse anzupassen. Wenn ein offizielles Debian-Paket erstellt wird oder auch nur das Paket im Netz verfügbar gemacht werden soll, so sollte die komplette Dokumentation, also auch Kommentare, in englischer Sprache erstellt werden. Bei Paketen für den privaten Gebrauch ist die Sprachwahl jedem selbst überlassen. Wenn keine weiteren Veränderungen an den Sourcen, der Dokumentation oder den Skripten des Programms notwendig waren, so kann diese Datei auch einfach gelöscht werden.
files¶
Diese Datei enthält lediglich den Paketnamen, den Bereich sowie die Priorität des Pakets.
changelog¶
In dieser Datei werden Veränderungen zwischen den einzelnen Paketversionen (changes) dokumentiert. Man sollte hier bei einer aktualisierten Version des Pakets die Veränderungen gegenüber der vorhergehenden Version dokumentieren.
copyright¶
In dieser Datei finden sich Hinweise zum Copyright dieses Pakets. Es können die gesamten Copyright-Informationen hier aufgeführt werden. Bei Paketen, die einer weit verbreiteten Lizenz unterliegen, reicht auch ein kurzer Hinweis, wo die Lizenz zu finden ist. Zu diesem Punkt gibt es immer wieder Diskussionen unter den Debian-Entwicklern. Insbesondere bei Paketen, die der GPL unterliegen, gehen die Meinungen auseinander. Grundsätzlich sollte, um Missverständnisse zu vermeiden, zu jedem Paket die Lizenz mitgeliefert werden. Die GPL hat in der aktuellen Version 2 eine Größe von ca. 18 Kbyte. Das ist nicht sehr viel; wenn man die aber mit einigen tausend Paketen multipliziert, so kommt doch eine beachtliche Menge an Speicherplatz zusammen. Es wurde vereinbart, im Verzeichnis /usr/share/common-licenses/ jeweils eine Version der gebräuchlichsten Lizenzen abzulegen und in jedem Paket nur auf die entsprechende Stelle zu verweisen. Somit ist sichergestellt, dass die Lizenz auf jedem Debian-System installiert ist.
control¶
Die Datei control enthält verschiedenste Angaben zu dem Paket. Wichtig ist hier die Zeile Section:
, dies ist der Bereich, in dem das Paket in der Debian-Paketstruktur erscheint. Die Zeile Description:
enthält in einer Zeile eine kurze Beschreibung des Pakets. Alle weiteren Zeilen müssen mit einem Leerzeichen beginnen und beschreiben das Paket ausführlich. Auch diese Texte sollten in englischer Sprache verfasst werden. Die meisten der verwendeten Schlüsselwörter sollten selbsterklärend sein. Source:
beschreibt den Namen (der Sourcen) des Pakets; mit Priority:
kann bestimmt werden, ob auf das Paket verzichtet werden kann (optional) oder ob das Paket zwingend notwendig für das System ist. Die Zeile Maintainer
enthält den Namen und die E-Mail-Adresse des Paketbetreuers; diese Angaben sind in der gezeigten Schreibweise anzugeben. Build-Depends:
beschreibt die Abhängigkeiten des Pakets. Mit dem Schlüsselwort Package:
wird der Paketname des Binärpakets beschrieben; die folgende Zeile Architecture:
gibt an, für welche Architekturen das Paket verwendet werden kann. Dies kann beispielsweise i386
, powerpc
, alpha
usw. sein, oder wie hier gezeigt, das Schlüsselwort any
für alle Architekturen.
rules¶
In dieser Datei werden die Regeln zum Erstellen des Pakets definiert. Sollte der verwendete Sourcecode kein Makefile enthalten oder auch kein configure-Skript verwenden, so müssen in dieser Datei die notwendigen Schritte zum erfolgreichen Übersetzen des Pakets beschrieben werden. Im hier gezeigten Beispiel wurde make
($(MAKE)
) mit der Option -j 6
ergänzt, um die Übersetzung etwas zu beschleunigen. Eventuell kann es, beispielsweise bei Paketen, die ausschließlich Dokumentation enthalten, notwendig sein, alle Zeilen, die make aufrufen, auszukommentieren. Sie müssen dann durch geeignete Einträge in der Datei selbst dafür sorgen, dass die Dateien an die richtige Stelle im Dateisystem kopiert werden. Die hier gezeigte Version wurde bereits an einigen Stellen angepasst. Im Abschnitt install: build
sind einige Regeln definiert worden, mit denen das ausführbare Programm durch ein Skript ersetzt wird. Weiterhin wird eine Konfigurationsdatei als Beispiel im Dokumentationsverzeichnis abgelegt.
menu¶
Mit dem Debian-Menüsystem können Programme, unabhängig von der verwendeten Benutzeroberfläche, in die Menüs der Benutzeroberfläche eingebunden werden. Bei der Verwendung eines Icons ist darauf zu achten, dass dieses auch tatsächlich vorhanden ist. Gegebenenfalls muss das Icon mit dem Paket zusammen installiert werden. Ubuntu verwendet jedoch nicht das Debian-Menüsystem sonder ein eigenes: Grundlagen der Paketerstellung/Menüeintrag.
Neben dem Paketnamen finden sich in dieser Datei weitere Angaben dazu, welche Benutzeroberfläche das Programm benötigt und in welchem Menüzweig es erscheinen soll. Das Schlüsselwort title
beschreibt den Text, der im Menü angezeigt wird; command
schließlich enthält den kompletten Pfad und den Programmnamen.
Apps -- Menü für Anwendungen Editors -- Programme zur Bearbeitung von Texten Net -- E-Mail, News, Webbrowser, IRC, etc. Programming -- Debugger, etc. Shells -- bash, ksh, zsh, etc. Tools -- Diverse Tools: xclock, xmag, xman, etc. Viewers -- Bildbetrachter, gs, xawtv, etc. Math -- gnuplot, octave, oleo, etc. Graphics -- xpaint, xfig, xtiff, etc. Emulators -- dosemu, etc. Sound -- TkMidity, etc. System -- System Verwaltung und Beobachtung Games -- Menü für Spiele Adventure -- Abenteuer, zork, MOO's, etc Arcade -- alles was schnell ist... Board -- Brettspiele: Gnuchess, pente, gnugo Card -- Solitare, etc Puzzles -- xpuzzles, ... Sports -- Sportliche Spiele Strategy -- lincity, freeciv Tetris-like -- Alles was runterfällt.... Toys -- oneko, xeyes, etc. Screen -- Lock -- xlock, etc. Screen-saver -- Bildschirmschoner Root-window -- Hintergründe Window-managers -- Umschalten zwischen verschiedenen Windowmanagern Modules -- fvwm modules, etc. XShells -- shells (xterm, rxvt, ...)
postinst, preinst, postrm und prerm¶
Diese vier Dateien enthalten Informationen, die vor (pre) bzw. nach (post) dem Installieren bzw. den Entfernen des Pakets ausgeführt werden sollen. Hier nur ein Beispiel: Alle in der Datei postinst enthaltenen Kommandos werden nach (post) der Installation (inst) des Pakets ausgeführt. Durch dh-make wurde im Verzeichnis debian eine Vorlage postinst.ex erzeugt, die umbenannt und mit Inhalten gefüllt werden kann. Das Skript kann während der Installation mit verschiedenen Parametern aufgerufen werden. Entsprechende Abschnitte in der Vorlage können mit den gewünschten Kommandos gefüllt werden. Wenn alle Anpassungen an den Dateien im Verzeichnis debian vorgenommen wurden, so kann versucht werden, in einem Terminal [2] mit dem Befehl
dpkg-buildpackage
ein Debian-Paket zu erzeugen. Hierbei ist zu beachten, dass das Kommando im Verzeichnis mit den entpackten Quelldateien ausgeführt wird.