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.
Außer Kraft setzende 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. Beachten Sie, dass Sie, um diese Funktion verwenden zu können, Build-Depend auf Debhelper 8.9.7 oder höher haben sollten.
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.
When called only with this option, dh can be called from any directory (i.e. it does not need access to files from a source package).
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.
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 $@ 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.
override_dh_fixperms-arch: dh_fixperms chmod 4755 debian/foo/usr/bin/foo
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.
Dieses Programm ist Teil von Debhelper.
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