Inhaltsverzeichnis
Zusammenfassung
Debhelper wird heute von sehr vielen Paketen verwendet, aber nicht immer konsequent und konsistent. Dieses Kapitel soll eine Hilfestellung geben.
Heutzutage wird aufgrund von dh_make debhelper von den meisten Paketen verwendet, aber nicht immer konsequent eingesetzt, insbesondere dann, wenn die Pakete weiterentwickelt werden. Die wichtigsten Features von debhelper sind:
dh_ beginnen.debian/compat eingetragen ist, arbeitet
debhelper in einem Kompatibilitätsmodus. Aktuell ist die
Versionsnummer 5.debian/$package.$file abgelegt werden
oder auch in $file für das erste Binärpaket
in debian/control. Beispiel:
debian/dirs wird von dh_installdirs
gelesen.debian/{pre,post}{inst,rm} an der mit
#DEBHELPER# gekennzeichneten Stelle. Übrigens braucht man keine
Skripte schreiben, die nur #DEBHELPER# enthalten, weil fehlende
Skripte von debhelper automatisch erstellt werden.debian/control hinzufügen.
Die Option -v sorgt dafür, dass das jeweilige Skript anzeigt, welche Unix-Kommandos es ausführt. Das gleiche erreicht man durch Setzen der Umgebungsvariable DH_VERBOSE. Die Option -n verhindert die Ausführung der genannten Kommandos. Kombiniert man beide Optionen, so sieht man, was das jeweilige Skript auszuführen beabsichtigt.
Dieses Kommando installiert die Datei debian/init aus dem
Quellpaket als /etc/init.d/$package in das Binärpaket und
ergänzt den Aufruf von update-rc.d im postinst. Falls vorhanden wird auch die
Datei debian/default nach
/etc/default/$package installiert.
Das ist ein weiteres Werkzeug, das sich um die Installation von Dateien in
Binärpakete kümmert. Die übergebenen Kommandozeilenargumente bzw. der Inhalt
von debian/manpages werden als Shellpattern (z. B. man/*.1)
interpretiert und die darauf passenden Dateien als manual pages in die
richtigen Verzeichnisse installiert. Die Verwendung von Shellpattern kommt bei
debhelper-Kommandos öfter vor.
Auch hier wird der Inhalt von debian/examples als
Shellpattern (z. B. examples/*) interpretiert und die passenden Dateien oder
Verzeichnisse nach /usr/share/doc/$package/examples/
installiert. Verzeichnisse werden dabei rekursiv kopiert.
Die in debian/docs genannten Dateien und Verzeichnisse
werden nach /usr/share/doc/$package/ installiert und
weiterhin wird eine vorhandene Datei debian/doc-base als
Konfigurationsdatei für doc-base installiert, welches die vorhandene
Dokumentation beispielsweise in die KDE- und GNOME-Hilfesysteme integriert.
Das ist ein generisches Installationswerkzeug und es kann auf 2 verschiedene Arten benutzt werden.
In der 1. Variante enthält die Datei debian/install pro
Zeile ein Quelldateipattern und ein Zielverzeichnis, z. B.
include/*.h /usr/include/foo/ foo.rc /etc/
Dateien können leider nicht umbenannt werden, dafür nutzt man besser das Unix-Kommando install.
Die 2. Variante lässt sich am besten an einem Beispiel erklären. Das Quellpaket libfoo erzeuge die beiden Binärpakete libfoo1 und libfoo-dev. Die Installation geschieht zunächst ganz herkömmlich in ein temporäres Verzeichnis mittels
make install DESTDIR=`pwd`/debian/tmp/
Die Datei debian/libfoo1.install enthält eine Zeile
debian/tmp/usr/lib/libfoo.so.*
wogegen debian/libfoo-dev.install folgendermaßen aussehen
könnte:
debian/tmp/usr/lib/libfoo.so debian/tmp/usr/lib/libfoo.*a debian/tmp/usr/include/*
Die nicht angegeben Zielverzeichnisse berechnet dh_install automatisch für uns.
Beide Varianten können auch gemischt verwendet werden.
Die Datei debian/links enthält pro Zeile Quelle und Ziel
eines zu erstellenden Symlinks, wobei beide Angaben absolute Dateinamen sein
müssen. Beispiel:
/etc/foo.rc /usr/share/foo/config.rc
Dieses Programm aus dem Paket python-central erzeugt die Substitutionsvariable
${python:Depends}, die in der Datei debian/control
verwendet werden kann, um die nötigen Abhängigkeiten in Python-Paketen
automatisch zu berechnen. Desweiteren erzeugt und entfernt es die Binärdateien
*.pyc und *.pyo beim Installieren bzw. Deinstallieren des Pakets. Für die
Verwendung des Programms ist es wichtig, dass die Datei
debian/pycompat den Wert 2 enthält.