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-22 12:44:34 UTCjoy-mg@debian.org
toddy@debian.org
mail@erikschanze.de
blade@debian.org