Archiv/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:

  1. Installation von Programmen

  2. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Einleitung
  2. Installation
  3. dh-make
  4. Die Dateien unter der Lupe

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

Paketliste zum Kopieren:

sudo apt-get install dh-make  

Oder mit apturl die Pakete 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.

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.

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&auml;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.