In diesem Dokument wird davon ausgegangen, dass Sie ein
Squeeze-System verwenden. Wenn Sie diesen Text auf einem
Lenny-System lesen, müssen Sie mindestens die zurückportierten
Pakete dpkg und debhelper installieren.
Es gibt einige ähnliche, aber spezialisierte Pakete wie
dh-make-perl, dh-make-php usw.
Trotzdem gibt es natürlich immer neue Programme, die es wert sind, für Debian paketiert zu werden.
Sie können das Archivformat herausfinden, indem Sie den Befehl
file verwenden, wenn die Dateierweiterung nicht genug ist.
Das Programm ist bereits paketiert worden. Die aktuelle Version 0.15.3 hat sich gegenüber der in den folgenden Beispielen benutzten Version 0.9.12 drastisch geändert.
Siehe Autotools
Tutorial und
/usr/share/doc/autotools-dev/README.Debian.gz.
Die Versionszeichenkette kann mit »dpkg --compare-versions
Ver1 Op Ver2« verglichen werden.
Siehe die Handbuchseite von dpkg(1).
Wenn die originalen Quellen das Verzeichnis debian und seinen
Inhalt enthalten, rufen Sie den Befehl dh_make stattdessen mit der
Option --addmissing auf. Das neue Quellformat 3.0
(quilt) ist sehr robust und kann selbst mit solchen Paketen umgehen.
Sie müssen wahrscheinlich die vom ursprünglichen Autor bereitgestellten
Inhalte für Ihr Debian-Paket aktualisieren.
Es gibt hier einige Auswahlmöglichkeiten: »s« für »Single
binary« (einzelnes Binärpaket), »i« für »Arch-Independent«
(Architektur-unabhängig), »m« für »Multiple binary« (mehrere
Binärpakete), »l« für »Library« (Bibliothek),
»k« für »Kernel module« (Kernelmodul), »n«
für »Kernel patch« (Kernelpatch) und »b« für
»cdbs«. Dieses Dokument konzentriert sich auf das Paket
debhelper mit dem Befehl dh. Dieses Dokument
konzentriert sich auf die Verwendung des neuen Befehls dh für
»Single binary« und streift die Verwendung für »Arch-Independent« und
»Multiple binary«. Das Paket cdbs bietet eine alternative
Paketierungs-Skriptinfrastruktur zum Befehl dh und wird in diesem
Dokument nicht behandelt.
Sie können diese Konfiguration ausschalten, indem Sie den Befehl
quilt folgendermaßen aufrufen: »quilt --quiltrc /dev/null
...«.
Das Verzeichnis debian/patches sollte inzwischen existieren, wenn
Sie dh_make wie vorher beschrieben ausgeführt haben. In diesem
Beispiel wird es sicherheitshalber erstellt, nur für den Fall, dass Sie das
existierende Paket aktualisieren.
Bei mehreren Binärpaketen (»multiple binary packages«) verwendet der Befehl
dh_auto_install das temporäre Verzeichnis
debian/tmp. Der Befehl dh_install teilt dann den
Inhalt von debian/tmp mit Hilfe von
debian/Paket-1.install und
debian/Paket-2.install in die temporären Verzeichnisse
debian/Paket-1 und
debian/Paket-2 auf, um daraus mehrere binäre
*.deb-Pakete zu erstellen.
Dies ist nur ein Beispiel, wie die Datei Makefile aussehen sollte.
Wenn die Makefile-Datei durch den Befehl ./configure
erstellt wird, ist die richtige Vorgehensweise, um diese Art
Makefile zu korrigieren, den Befehl ./configure durch
den Befehl dh_auto_configure aufrufen zu lassen. Dabei kommen die
voreingestellten Optionen zum Tragen, einschließlich der Option
--prefix=/usr.
Der Autor ist sich bewusst, dass dies nicht das beste Beispiel ist, weil das
Paket libncurses mittlerweise einen symbolischen Link auf
libcurses.so enthält, aber er konnte sich kein besseres
ausdenken. Vorschläge sind sehr erwünscht :-)
Diese etwas merkwürdige Situation ist eine Besonderheit, die in den Debian-Richtlinien,
Fußnote 48 sehr gut dokumentiert ist. Es liegt nicht an der
Verwendung des Befehls dh in der Datei debian/rules,
sondern daran, wie das Programm dpkg-buildpackage arbeitet.
Dieselbe Situation gilt auch für das »auto build
system« von Ubuntu.
Einige Leute verwenden ungültige Werte für die Distribution wie UNRELEASED, um zu verhindern, dass ein Paket versehentlich hochgeladen wird, wenn es in einem verteilten Versionskontrollsystem aktualisiert wird.
Dieses Target wird von »dpkg-buildpackage« wie in Kompletter Neubau, Abschnitt 6.1 beschrieben benutzt.
Dieses Target wird von »dpkg-buildpackage -B« wie in Autobuilder, Abschnitt 6.2 beschrieben benutzt.
Dieses Target wird von »dpkg-buildpackage -A« benutzt.
Dies verwendet die neuen Möglichkeiten von debhelper V7. Dessen
Designkonzepte werden in »Not Your
Grandpa's Debhelper« erklärt, das auf der Debconf9 vom
debhelper-Betreuer präsentiert wurde. Unter lenny
erzeugte dh_make eine wesentlich kompliziertere Datei
rules, die für jedes erforderliche und explizit benannte Target
vielen dh_*-Skripte auflistete. Dadurch wurde der Status
eingefroren, der während der initialen Paketerstellung aktuell war. Der neue
dh-Befehl ist einfacher und befreit uns von dieser Beschränkung.
Sie haben mit den override_dh_*-Targets weiterhin die
vollständige Kontrolle über Anpassungen. Siehe Anpassungen der Datei rules, Abschnitt
4.4.3. Es basiert lediglich auf dem Paket debhelper und
verschleiert den Prozess des Paketbaus nicht wie das Paket cdbs.
Sie können überprüfen, welche Sequenzen von dh_*-Programmen
für ein bestimmtes Target tatsächlich aufgerufen
werden, indem Sie »dh --no-act Target« oder
»debian/rules -- '--no-act Target'« ausführen.
Dadurch werden die Sequenzen nicht ausgeführt.
Hier wird vorausgesetzt, dass das Paket python-support auf dem
System installiert ist.
Für vollständige Informationen darüber, was all diese
dh_*-Skripte genau machen und was ihre weiteren Optionen sind,
lesen Sie bitte die jeweiligen Handbuchseiten und die Dokumentation von
debhelper.
Diese Befehle unterstützen andere Build-Umgebungen wie beispielsweise
setup.py, die durch das Aufrufen von »dh_auto_build
--list« im Quellverzeichnis eines Pakets aufgelistet werden können.
Tatsächlich wird nach dem ersten verfügbaren Target aus der Liste
distclean, realclean oder clean im
Makefile gesucht und dieses ausgeführt.
Tatsächlich wird nach dem ersten verfügbaren Target aus der Liste
test oder check im Makefile gesucht und
dieses ausgeführt.
Wenn ein Paket die Datei
/usr/share/perl5/Debian/Debhelper/Sequence/eigener_name.pm
installiert, können Sie dessen angepasste Funktion mittels »dh --with
eigener-name $@« aktivieren.
Die Benutzung des Befehls dh_pysupport wird gegenüber dem Befehl
dh_pycentral bevorzugt. Verwenden Sie nicht den Befehl
dh_python.
Wenn Sie unter Lenny das Verhalten eines dh_*-Skripts
ändern wollten, mussten Sie die entsprechende Zeile in der Datei
rules aufsuchen und dort anpassen.
Das Paket gentoo verwendet das GNU-Build-System, auch bekannt als
die Autotools. Siehe http://de.wikipedia.org/wiki/GNU_Build_System.
dh_auto_build ohne Argumente führt das erste Target in der Datei
Makefile aus.
Die Dateien debian/changelog und debian/NEWS werden
immer automatisch installiert. Das ursprüngliche Changelog wird gesucht,
indem die Dateinamen in Kleinbuchstaben umgewandelt werden und mit
changelog, changes, changelog.txt und
changes.txt verglichen werden.
The actual autobuilder system involves much more complicated schemes than the one documented here. Such details are beyond the scope of this document.
Unlike under the pbuilder package, the chroot
environment under the sbuild package used by the autobuilder
system does not force the minimal system and may leave many packages installed.
Wenn Sie noch kein Debian-Entwickler sind und Ihren Sponsor bitten, Ihr Paket nach einer Überprüfung hochzuladen, sollten Sie Ihr Paket so einfach wie möglich für ihn überprüfbar machen.
Sie sollten eventuell Ihr System anpassen, indem Sie das Verzeichnis
/var/cache/pbuilder/result/ für die Benutzer schreibbar machen
und in der Datei ~/.pbuilderrc oder /etc/pbuilderrc
Folgendes hinzufügen:
AUTO_DEBSIGN=yes
Damit können Sie die erzeugten Pakete mit Ihrem geheimen GPG-Schlüssel unter
~/.gnupg/ signieren. Da sich das Paket pbuilder in
ständiger Entwicklung befindet, sollten Sie die aktuellen
Einstellmöglichkeiten in der letzten offiziellen Dokumentation nachschlagen.
Siehe ftp://ftp.upload.debian.org/pub/UploadQueue/README.
Sie können auch das Kommando dcut aus dem Paket dput
benutzen.
Bitte sorgen Sie dafür, dass Ihr Paket durch wohldurchdachtes
postinst etc. die Konfigurationsdateien ordentlich aktualisiert,
damit nichts geschieht, was der Benutzer nicht will! Das sind
die Verbesserungen, die erklären, warum sich Leute für
Debian entscheiden.
Wenn es nötig ist, die Aktualisierung auffällig ablaufen zu lassen (z.B.
Konfigurationsdateien sind in verschiedenen Home-Verzeichnissen mit völlig
unterschiedlicher Struktur verstreut), sollten Sie als letzte Möglichkeit das
Paket in einen sicheren Standardmodus bringen (z.B. den Dienst abschalten) und
eine ordentliche Dokumentation gemäß der Policy (README.Debian
und NEWS.Debian) bereitstellen. Aber nicht den Admin mit einer
debconf-Meldung belästigen.
Einige Leute lehnen das sogar für Debian-spezifische Pakete ab und finden es
besser, den Inhalt des Verzeichnisses debian/ in die Datei
*.diff.gz zu packen, als in die Datei *.orig.tar.gz.
Anleitung für zukünftige Debian-Betreuer
Diese Übersetzung wird derzeit aktualisiert. Teile beruhen auf Version 1.2.3 vom 18. Januar 2005, die aktuelle Version ist 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.orgtoddy@debian.orgmail@erikschanze.deblade@debian.org