Provided by: debhelper_12.10ubuntu1_all 

NAME
dh - Debhelper-Befehls-Sequenzer
ÜBERSICHT
dh Sequenz [--with Add-on[,Add-on …]] [--list] [Debhelper-Optionen]
BESCHREIBUNG
dh führt eine Sequenz von Debhelper-Befehlen aus. Die unterstützten Sequenzen entsprechen den Zielen
einer debian/rules-Datei: build-arch, build-indep, build, clean, install-indep, install-arch, install,
binary-arch, binary-indep und binary.
AUßER KRAFT SETZENDE UND HOOK-ZIELE
Eine debian/rules-Datei, die dh benutzt, kann einen Befehl aus jedem Schritt einer Sequenz, der
ausgeführt wird, außer Kraft setzen, indem ein außer Kraft setzendes Ziel definiert wird. Es ist auch
möglich, Befehle vor oder nach jedem Schritt einzuspeisen, ohne den Schritt selbst zu beeinflussen.
Befehle vor oder nach einem Schritt einspeisen
Hinweis: Diese Funktionalität erfordert Debhelper 12.8 oder neuer, zudem muss das Paket
Kompatibilitätsmodus 10 oder neuer nutzen.
Um Befehle vor dh_Befehl einzuspeisen, fügen Sie den Rules-Dateien ein Ziel namens
execute_before_dh_Befehl hinzu. Analog fügen Sie, wenn Sie nach dh_Befehl Befehle einspeisen wollen,
execute_after_dh_Befehl hinzu. Beide Ziele können für denselben dh_Befehl benutzt werden und das sogar,
wenn der Befehl außer Kraft gesetzt wurde (wie nachfolgend in "Einen Befehl außer Kraft setzen"
beschrieben).
Wenn diese Ziele definiert sind, wird dh die Ziele vor beziehungsweise nach dem Aufruf von dh_Befehl
(oder dessen außer Kraft setzendem Ziel) aufrufen.
Einen Befehl außer Kraft setzen
Um dh_Befehl außer Kraft zu setzen, fügen Sie der Datei »rules« ein Ziel mit Namen override_dh_Befehl
hinzu. Wenn es normalerweise dh_Befehl ausführen würde, wird dh stattdessen dieses Ziel aufrufen. Das
außer Kraft setzende Ziel kann dann den Befehl mit zusätzlichen Optionen oder stattdessen ganz andere
Befehle ausführen. Lesen Sie die folgenden Beispiele.
Architekturabhängige/-unabhängige außer Kraft setzende und Hook-Ziele
Außer Kraft setzende und Hook-Ziele können außerdem definiert werden, um nur ausgeführt zu werden, wenn
architekturab- oder -unabhängige Pakete gebaut werden. Benutzen Sie Ziele mit Namen wie
override_dh_Befehl-arch und override_dh_Befehl-indep.
Diese Funktionalität ist seit Debhelper 8.9.7 (für außer Kraft setzende Ziele) und 12.8 (für Hook-Ziele)
verfügbar.
Komplett leere Ziele
Als besondere Optimierung wird dh ein Ziel überspringen, falls es komplett leer ist. Dies ist für außer
Kraft setzende Ziele am nützlichsten, wobei der Befehl einfach nur übersprungen wird, ohne den
Mehraufwand, ein Scheinziel aufzurufen.
Beachten Sie, das das Ziel komplett leer sein muss, damit dies funktioniert.
# überspringt dh_bar auf die gute und optimierte Art
# hier wird eine Begründung zum Überspringen von dh_bar eingefügt
override_dh_bar:
# überspringt dh_foo auf die langsame Art
override_dh_foo:
# hier wird eine Begründung des Überspringens von dh_foo eingefügt
# (diese Kommentare verursachen die Ausführung eines Scheinziels)
Überprüfung, dass Ziele von dh aufgenommen werde
Um zu bestätigen, dass dh ein außer Kraft setzendes oder Hook-Ziel gefunden hat, können Sie
beispielsweise folgenden Befehl verwenden:
$ dh binary --no-act | grep dh_install | head -n5
dh_installdirs
dh_install
debian/rules execute_after_dh_install
dh_installdocs
dh_installchangelogs
Das debian/rules execute_after_dh_install in der Ausgabe zeigt an, dass dh ein
execute_after_dh_install-Ziel registrierte und es direkt nach dh_install(1) ausführen würde.
Beachten Sie, dass "Komplett leere Ziele" im oberen Listing weggelassen wurde. Damit wird es etwas
schwieriger zu finden, wenn Sie nach dem Weglassen eines Befehlsnamens suchen. Aber andererseits bleibt
das Prinzip dasselbe.
OPTIONEN
--with Add-on[,Add-on …]
fügt die Debhelper-Befehle, die durch das gegebene Add-on angegeben wurden, an geeigneten Stellen der
Befehlssequenz, die ausgeführt wird, hinzu. Diese Option kann mehr als einmal wiederholt werden oder
es können mehrere Add-ons durch Kommas getrennt aufgeführt werden. Dies wird benutzt, wenn es ein
Fremdpaket gibt, das Debhelper-Befehle bereitstellt. Dokumentation über die Sequenz-Add-on-
Schnittstelle finden Sie in der Datei PROGRAMMING.
Eine Build-Depends-Beziehung zum Paket dh-sequence-Erweiterung setzt ein --with Erweiterung voraus.
Dies vermeidet, dass ein explizites --with in debian/rules benötigt wird, das nur vervielfältigt, was
bereits über die Bauabhängigkeiten in debian/control erklärt wurde. Die Beziehung kann (seit 12.5)
optional gemacht werden, z.B. über Bauprofile. Dies versetzt Sie in die Lage, einfach eine
Erweiterung zu deaktivieren, die nur mit einem bestimmten Profil nützlich ist (z.B. um Bootstrapping
zu erleichtern).
Ab Debhelper 12.5 können Erweiterungen auch im reinen indep-Modus (über Build-Depends-Indep) oder
reinen arch-Modus (über Build-Depends-Arch) aktiviert werden. Derartige Erweiterungen sind nur in der
bestimmten Sequenz aktiv (z.B. binary-indep), die Abhängigkeitsverwaltung für Cross-Bauen
vereinfachen.
Bitte beachten Sie, dass Erweiterungen, die über Build-Depends-Indep oder Build-Depends-Arch
aktiviert wurden, Gegenstand zusätzlicher Beschränkungen sind, um sicherzustellen, dass das Ergebnis
sogar dann deterministisch ist, wenn die Erweiterung nicht verfügbar ist (z.B. während einer
Reinigung). Dies impliziert, dass einige Erweiterungen mit diesen Beschränkungen inkompatibel sind
und nur über Build-Depends (oder manuell über debian/rules) benutzt werden können. Derzeit können
derartige Erweiterungen nur Befehle zu Sequenzen hinzufügen.
--without Add-on
das Gegenteil von --with, deaktiviert die Benutzung des angegebenen Add-ons. Diese Option kann
mehrfach wiederholt werden oder es können mehrere Add-ons zum Deaktivieren durch Kommas getrennt
aufgelistet werden.
--list, -l
listet alle verfügbaren Add-ons auf.
Wenn es nur mit dieser Option aufgerufen wird, kann dh aus jedem Verzeichnis aufgerufen werden (d.h.
es benötigt keinen Zugriff auf Dateien aus einem Quellpaket).
--no-act
gibt Befehle aus, die für eine angegebene Sequenz ausgeführt würden, führt sie aber nicht aus
Beachten Sie, dass dh normalerweise die Ausführung von Befehlen, von denen es weiß, dass sie nichts
tun, überspringt. Mit »--no-act« wird die vollständige Liste der Befehle der Reihe nach ausgegeben.
Andere an dh übergebene Optionen werden an jeden Befehl, den es ausführt, weitergereicht. Dies kann
benutzt werden, um eine Option wie -v, -X oder -N sowie spezialisiertere Optionen zu setzen.
BEISPIELE
Um zu sehen, welche Befehle in einer Sequenz enthalten sind, ohne tatsächlich etwas zu tun, geben Sie
Folgendes ein:
dh binary-arch --no-act
Dies ist eine einfach »rules«-Datei für Pakete, bei denen die vorgegebenen Befehlssequenzen ohne
zusätzliche Optionen arbeiten.
#!/usr/bin/make -f
%:
dh $@
Oft möchten Sie eine Option an einen speziellen Debhelper-Befehl übergeben. Der einfachste Weg, dies zu
tun, besteht darin, ein außer Kraft setzendes Ziel für diesen Befehl hinzuzufügen.
#!/usr/bin/make -f
%:
dh $@
override_dh_strip:
dh_strip -Xfoo
override_dh_auto_configure:
dh_auto_configure -- --with-foo --disable-bar
Manchmal können die automatisierten dh_auto_configure(1) und dh_auto_build(1) nicht abschätzen, was für
ein merkwürdiges Paket zu tun ist. Hier nun, wie das Ausführen vermieden und stattdessen Ihre eigenen
Befehle ausgeführt werden.
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_configure:
./mondoconfig
override_dh_auto_build:
make universe-explode-in-delight
Ein weiterer häufiger Fall ist, dass Sie vor oder nach der Ausführung eines besonderen Debhelper-Befehls
manuell etwas tun möchten.
#!/usr/bin/make -f
%:
dh $@
# Beispiel geht von Debhelper/12.8 und Kompatibilitätsstufe 10+ aus
execute_after_dh_fixperms:
chmod 4755 debian/foo/usr/bin/foo
Falls Sie auf einer älteren Debhelper-Kompatibilitätsstufe sind, würde das Beispiel wie folgt aussehen:
#!/usr/bin/make -f
%:
dh $@
# ältere Debhelper-Versionen oder Verwendung von Kompatibilitätsstufe 9
#und niedriger
override_dh_fixperms:
dh_fixperms
chmod 4755 debian/foo/usr/bin/foo
Python-Werkzeuge werden aufgrund ständiger Änderungen in diesem Bereich nicht standardmäßig von dh
ausgeführt. Hier wird gezeigt, wie dh_python2 benutzt wird.
#!/usr/bin/make -f
%:
dh $@ --with python2
Hier wird gezeigt, wie die Benutzung von Perls Bausystem Module::Build erzwungen wird, was nötig sein
kann, falls Debhelper fälschlicherweise entdeckt, dass das Programm MakeMaker verwendet.
#!/usr/bin/make -f
%:
dh $@ --buildsystem=perl_build
Hier ein Beispiel für das außer Kraft setzen, wobei die dh_auto_*-Befehle den Paketquelltext für ein
Paket finden, bei dem der Quelltext in einem Unterverzeichnis liegt.
#!/usr/bin/make -f
%:
dh $@ --sourcedirectory=src
Und hier ist ein Beispiel, wie dh_auto_*-Befehlen mitgeteilt wird, dass in einem Unterverzeichnis gebaut
wird, das mit clean entfernt wird.
#!/usr/bin/make -f
%:
dh $@ --builddirectory=build
Falls Ihr Paket parallel gebaut werden kann, benutzen Sie bitte entweder Kompatibilitätsmodus 10 oder
übergeben Sie --parallel an Dh. Dann wird dpkg-buildpackage -j funktionieren.
#!/usr/bin/make -f
%:
dh $@ --parallel
Falls Ihr Paket nicht verlässlich unter Verwendung mehrerer Threads gebaut werden kann, übergeben Sie
bitte --no-parallel an Dh (oder den zuständigen dh_auto_*-Befehl):
#!/usr/bin/make -f
%:
dh $@ --no-parallel
Es folgt eine Möglichkeit, die Ausführung mehrerer Befehle, die Sie nicht ausführen möchten, durch dh zu
verhindern, indem Sie leere, außer Kraft setzende Ziele für jeden Befehl definieren.
#!/usr/bin/make -f
%:
dh $@
# nicht auszuführende Befehle:
override_dh_auto_test override_dh_compress override_dh_fixperms:
Ein langer Bauprozess für ein separates Dokumentationspaket kann durch Benutzung von
architekturabhängigem außer Kraft setzen abgetrennt werden. Dies wird übersprungen, wenn »build-arch«-
und »binary-arch«-Sequenzen ausgeführt werden.
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_build-indep:
$(MAKE) -C docs
# Keine Tests für Dokumente nötig
override_dh_auto_test-indep:
override_dh_auto_install-indep:
$(MAKE) -C docs install
Angenommen, Sie möchten zusätzlich zum vorhergehenden Beispiel Dateimodusbits einer Datei ändern, aber
nur, wenn Sie ein architekturabhängiges Paket bauen, da es beim Bauen der Dokumentation nicht vorhanden
ist.
# Beispiel geht von Debhelper/12.8 und Kompatibilitätsstufe 10+ aus
execute_after_dh_fixperms-arch:
chmod 4755 debian/foo/usr/bin/foo
INTERNA
Falls Sie neugierig auf die Interna von dh sind, ist hier beschrieben, wie es unter der Haube arbeitet.
Im Kompatibilitätsmodus 10 (oder höher) erzeugt dh eine Stempeldatei debian/debhelper-build-stamp,
nachdem die Bauschritte abgeschlossen sind, um ein erneutes Ausführen zu vermeiden. Es ist möglich, die
Stempeldatei zu vermeiden, indem --without=build-stamp an dh übergeben wird. Dies sorgt dafür, dass
»unsauber« gebaute Pakete sich eher so verhalten, wie es manche Leute erwarten. Allerdings wird der Bau
und das Testen möglicherweise zweimal ausgeführt (das zweite Mal als Root oder unter fakeroot(1)).
Innerhalb eines außer Kraft setzenden Ziels werden dh_*-Befehle eine
debian/package.debhelper.log-Protokolldatei erzeugen, um den Überblick zu behalten, für welche Pakete die
Befehle ausgeführt wurden. Diese Protokolldateien werden entfernt, sobald die außer Kraft setzenden Ziele
erledigt sind.
Im Kompatibilitätsmodus 9 oder älter wird jeder Debhelper-Befehl in debian/package.debhelper.log
aufgezeichnet, wenn er erfolgreich ausgeführt wurde. (Was durch dh_clean gelöscht wird.) Daher kann dh
sagen, welche Befehle bereits für welche Pakete ausgeführt wurden und die erneute Ausführung dieser
Befehle überspringen.
Jedesmal, wenn dh (im Kompatibilitätsmodus 9 oder älter) ausgeführt wird, untersucht es das Protokoll und
findet den zuletzt protokollierten Befehl in der angegebenen Sequenz.
Eine Sequenz kann außerdem abhänge Ziele in debian/rules ausführen. Die Sequenz »binary« führt zum
Beispiel das Ziel »install« aus.
dh benutzt die Umgebungsvariable DH_INTERNAL_OPTIONS, um Informationen an die Debhelper-Befehle
durchzureichen, die innerhalb der Ziele ausgeführt werden. Der Inhalt (und die tatsächliche Existenz)
dieser Umgebungsvariable ist, wie der Name schon andeutet, Gegenstand dauernder Änderungen.
Befehle in den Sequenzen build-indep, install-indep und binary-indep werden an die Option -i übergeben,
um sicherzustellen, dass sie nur auf architekturunabhängigen Paketen funktionieren. Befehle in den
Sequenzen build-arch, install-arch und binary-arch werden an die Option -a übergeben, um sicherzustellen,
dass sie nur auf architekturabhängigen Paketen funktionieren.
SIEHE AUCH
debhelper(7)
Dieses Programm ist Teil von Debhelper.
ÜBERSETZUNG
Diese Übersetzung wurde mit dem Werkzeug po4a <http://po4a.alioth.debian.org/> durch Chris Leick
c.leick@vollbio.de und das deutsche Debian-Übersetzer-Team im Dezember 2011 erstellt.
Bitte melden Sie alle Fehler in der Übersetzung an debian-l10n-german@lists.debian.org oder als
Fehlerbericht an das Paket debhelper.
Sie können mit dem folgenden Befehl das englische Original anzeigen man -L en Abschnitt Handbuchseite
AUTOR
Joey Hess <joeyh@debian.org>
12.10ubuntu1 2020-03-27 DH(1)