Scroll to navigation

debhelper(7) Debhelper debhelper(7)

NAME

debhelper-compat-upgrade-checklist - Upgrade-Prüfliste für unterstützte Debhelper-Kompatiblitätsstufen

ÜBERSICHT

Dieses Dokument ist eine Upgrade-Prüfliste für alle unterstützten Debhelper-Kompatibilitätsstufen. Es listet darüber hinaus alle unterstützten Debhelper-Kompatibilitätsstufen auf.

Informationen darüber, wie die Kompatibilitätsstufen deklariert werden, ist in "KOMPATIBILITÄTSSTUFEN" in debhelper(7) zu finden.

Falls Sie ein Upgrade von einer (jetzt) überholten Kompatibilitätsstufe durchführen, schlagen Sie bitte in debhelper-obsolete-compat(7) nach.

BESCHREIBUNG

Upgrade-Prüfliste für unterstützte Kompatibilitätsstufen.

Folgende Kompatibilitätsstufen sind verfügbar:

Diese Kompatibilitätsstufe ist immer noch für die Entwicklung offen. Verwenden Sie sie mit Vorsicht.

Änderungen gegenüber v14 sind:

  • Die Erweiterung single-binary für dh wird nicht mehr implizit von Quellpaketen aktiviert, die einen einzelnen Eintrag Package in debian/control haben. Falls das Paket diefür Abkürzungen für Einzel-Binärpakete benötigt, muss es die Erweiterung single-binary explizit aktivieren.

    Das kann mit einem Build-Depends auf dh-sequence-single-binary erreicht werden.

    Jedes --without single-binary, das an dh übergeben wurde, um die Warnung im Kompatibilitätsmodus 14 zu vermeiden, kann jetzt entfernt werden, um debian/rules zu vereinfachen, ohne die Warnung auszulösen.

  • Jetzt ist es in den meisten Fällen ein Fehler, paketlose Versionen von Debhelper Konfigurationsdateien zu verwenden, wenn zwei oder mehr Binärpakete in debian/control aufgeführt sind. Veraltete Dateien sollten (von debian/foo) in debian/Paket.foo umbenannt werden, wobei Paket das erste der in debian/control aufgeführten Binärpakete ist.

    Die Hauptausnahme bei dieser Änderung sind Dateien wie debian/changelog, debian/NEWS und debian/copyright, wo die gleiche Datei per Voreinstellung für alle Pakete verwendet wird. Diese Fälle bleiben unverändert.

  • Es ist jetzt ein Fehler, eine Paket-Datei ohne den Paket-Prefix für --name zu verwenden, selbst wenn das Quellpaket nur ein Binärpaket erzeugt. Falls Sie beispielsweise einen debian/bar.service mit dem folgenden Schnipsel in debian/rules hatten:

     override_dh_installsystemd:
        dh_installsystemd -p foo --name bar
        

    Dann müssen Sie debian/bar.service in debian/foo.bar.service umbenennen.

Diese Kompatibilitätsstufe ist immer noch für die Entwicklung offen. Verwenden Sie sie mit Vorsicht.

Änderungen gegenüber v13 sind:

  • Das dh_installpam-Werkzeug wird die PAM-Konfigurationsdateien nicht mehr unter /etc/pam.d/Paket, sondern unter /usr/lib/pam.d/Paket installieren.

    Bitte prüfen Sie, ob Sie die »rm_conffile«-Funktion von dh_installdeb(1) einsetzen wollen, um die gründliche Entfernung bestehender PAM-Dateien sicherzustellen.

  • Pakete, die den dh-Sequenzer verwenden, sollten folgende Änderungen berücksichtigen:
  • Die Reihenfolge und Platzierung für dh_strip_nondeterminism, dh_compress, und dh_fixperm hat sich geändert. Früher wurden diese drei Befehle in der aufgeführten Reihenfolge zwischen dh_installxfonts und dh_missing ausgeführt.

    Ihre neue Platzierung ist nach dh_missing (arch:all) oder dh_shlibdeps (arch:any) und vor dh_installdeb. Außerdem ist ihre neue Reihenfolge dh_fixperms, dh_strip_nondeterminism und dann dh_compress.

    Diese Änderung macht möglicherweise Aktualisierungen von Erweiterungen von Drittanbietern notwendig, die einen dieser drei Befehle als Anker oder Hook-Ziele für einen dieser Befehle verwenden, und die Annahmen über die Reihenfolge der Befehle treffen.

    Additionally, dh_strip_nondeterminism and dh_compress plus any commands added by third-party add-ons using these as anchors will no longer be able to rely on the mode/ownership normalization by dh_fixperms, which may expose bugs in the form of incorrect mode or ownership in the resulting binary package.

    Bitte melden Sie den Entwicklern der entsprechenden Werkzeugen jeden dieser Fehler. Sie können die Betreuer von debhelper in Kopie setzen.

  • Das Werkzeug dh_installsysusers ist jetzt in der Standardsequenz enthalten. Es verarbeitet systemd-Sysuser-Dateien.
  • Das Werkzeug dh_installsystemduser aktiviert jetzt in der Voreinstellung Systemd-User-Units, startet sie bei der Installation, startet sie bei Upgrades neu und stoppt sie bei der Deinstallation eines Pakets.
  • Die Verwendung des dh_gconf-Befehls in Override- und Hook-Zielen führt jetzt zu einem Fehler. Der dh_gconf-Befehl war seit Jahren ein Leerbefehl und ist in Debhelper 13.4 entfernt worden.
  • Das Werkzeug dh_installalternatives wird jetzt in der Standard-dh-Sequenz nach dh_link und nicht mehr nach dh_installinitramfs ausgeführt.
  • Dieser Punkt ist nur auf Quellpakete anwendbar, die genau einen Abschnitt Paket in debian/control haben.

    Der Befehl dh_auto_install verwendet jetzt standardmäßig und bedingungslos --destdir=debian/tmp. Der Spezialfall für Quellpakete, die ein einziges Binärpaket bauen, ist jetzt in die Erweiterung single-binary von dh verschoben worden. Bitte beachten Sie, dass diese Erweiterung im Kompatibilitätsmodus 14, aber nicht im Kompatibilitätsmodus 15 standardmäßig aktiviert ist (siehe den nächsten Punkt).

  • Dieser Punkt ist nur auf Quellpakete anwendbar, die genau einen Abschnitt Paket in debian/control haben.

    Der dh-Sequenzer wird eine Warnung ausgeben, wenn die single-binary-Erweiterung implizit aktiviert wurde, um Betreuer vor der anstehenden Änderung in Kompatibilitätsstufe 15 in dh_auto_install zu warnen. Die implizite Aktivierung ist eine Funktionalität für den Übergang, um das Risiko zu reduzieren, das diese Änderung mit sich bringt. In Kompatibilitätsstufe 15 wird die implizite Aktivierung nicht mehr auslösen.

    Betreuern wird dringend geraten, die single-binary-Erweiterung entweder explizit zu aktivieren, um das bisherige Verhalten beizubehalten (bspw. durch Hinzufügen von dh-sequence-single-binary zu Build-Depends), oder dh_auto_install explizit mit --destdir aufzurufen, wenn verwendet, und dann --without single-binary bei dh anzugeben (Letzteres zum Abstellen der Warnung).

    Der Zweck dieser Änderung besteht darin, »Überraschungen« beim späteren Hinzufügen eines zweiten Binärpakets zu vermeiden. In der Vergangenheit hat Debhelper kommentarlos sein Verhalten geändert, was dazu führte, dass versehentlich leere Pakete ins Archiv hochgeladen wurden. Bei der neuen Vorgehensweise wird die single-binary-Erweiterung diese Diskrepanz feststellen und den Betreuer vor dem, was passieren wird, warnen.

-
Das Werkzeug dh_gencontrol wendet nun automatisch Ersetzungsvariable mit Beziehungen auf die relevanten Felder an. Das bedeutet, dass viele Ersetzungsvariable wie ${misc:Depends} und ${shlibs:Depends} nicht mehr explizit in debian/control aufgeführt werden müssen. Das betrifft jede Ersetzungsvariable, die nach einem Feld benannt wird, das die installierte Version von dpkg als eine Beziehung oder ein abhängigkeitsähnliches Feld versteht. Zur Zeit der Erstellung des Dokuments besteht diese Liste aus:
  • Pre-Depends
  • Depends
  • Recommends
  • Suggests
  • Enhances
  • Conflicts
  • Breaks
  • Replaces
  • Provides
  • Built-Using
  • Static-Built-Using

Das bedeutet, dass zum Beispiel Depends: foo, ${misc:Depends} in debian/control zu Depends: foo verkürzt werden kann. Außerdem kann als Beispiel für diese Funktionalität Depends: ${misc:Depends}, ${shlibs:Depends} komplett entfernt werden.

Beachten Sie, dass andere Ersetzungsvariable wie B${binary:Version} von dieser Änderung nicht betroffen sind und weiterhin wenn notwendig explizit verwendet werden sollen. Bei Paketen, bei denen Essential: yes gesetzt ist und bei denen manuell das Feld ${shlibs:Depends} in das Feld Pre-Depends übertragen wurde, wird dh_shlibdeps dies ebenfalls automatisch handhaben (siehe den nächsten Punkt zu Kompatibilitätsstufen).

Siehe <https://lists.debian.org/debian-devel/2024/02/msg00230.html> für Details zu diesem Vorschlag. Die Zusammenfassung in <https://lists.debian.org/debian-devel/2024/03/msg00030.html> behandelt auch die Fälle, bei denen Ersetzungsvariable eine Anpassung benötigen. Der allgemeinste Fall beinhaltet die Verwendung der Option -d von dpkg-shlibdeps, möglicherweise durch dh_shlibdeps.

Hinweis: Diese Änderung wird Falsch-positiv-Bewertungen von einem nicht korrigiertem lintian(1) verursachen. Bitte prüfen Sie anhand von <https://bugs.debian.org/1067653>, ob lintian(1) diese Änderung unterstützt.

  • Das Werkzeug dh_shlibdeps verwendet in der Voreinstellung ${shlibs:Pre-Depends} für Pakete mit Essential: yes.

    Beachten Sie, dass durch die obige Änderung von dh_gencontrol jedes Paket, das dh_gencontrol verwendet, nicht von dieser Migration betroffen ist.

  • When running dh_auto_install, debhelper provided build systems. will now ensure all paths in the destdir have minimal user permissions (chmod -R u+rwX) to avoid weird permission denied errors during builds.

    Third-party provided debhelper build systems are recommended to support this as well. This can be done by running

         $this->ensure_minimal_permissions($destdir) if not compat(13);
        

    in the debhelper Buildsystem code from their sub install implementation after the upstream code has been run.

    If you are not using dh_auto_install and you run into weird permission denied errors, you can often solve this by running chmod -R u+rwX DIRECTORY after running the install target from the upstream build system.

    Please take care to check if your package has any special cases for permissions where files or directories for some reason must not have the "user write bit" set. Known cases are *.ali files and /etc/sudoers.d, which dh_fixperms will fix up by default.

    The problem with uncommon permissions have always been present in theory. However, it has become considerable more visible with dh_fixperms being run later in the sequence as of compat 14 and with the move to remove fakeroot by default (which papered over some of these issues). This change is aimed at mitigating the problem.

  • Die Debhelper-Konfigurationsdateien unterliegen den folgenden Änderungen:
  • Es veranlasst nun in den meisten Fällen eine Warnung, die paketlosen Versionen von Debhelper-Konfigurationsdateien zu verwenden, wenn zwei oder mehr Binärpakete in debian/control aufgeführt sind. Veraltete Dateien sollten (von debian/foo) in debian/Paket.foo umbenannt werden, wobei Paket das erste der in debian/control aufgeführten Binärpakete ist.

    Die Hauptausnahme bei dieser Änderung sind Dateien wie debian/changelog, debian/NEWS und debian/copyright, wo die gleiche Datei per Voreinstellung für alle Pakete verwendet wird. Diese Fälle bleiben unverändert. Das Werkzeug Debhelper wird bei Verwendung dieser Dateien eine Warnung auslösen.

    In Kompatibilitätsstufe 15 (oder neuer) ist das geändert zu einem Fehler.

  • It now triggers a warning to use a packaging file without the package prefix for --name even if the source package only produces one binary package. As example, if you had a debian/bar.service with the following snippet in debian/rules:

     override_dh_installsystemd:
        dh_installsystemd -p foo --name bar
        

    Dann müssen Sie debian/bar.service in debian/foo.bar.service umbenennen.

    In Kompatibilitätsstufe 15 (oder neuer) ist das geändert zu einem Fehler.

  • The default look up rules for Dh_Lib based tools now assume that configuration files are no longer named (--name) nor support architecture restrictions by default. If you work with a third-party debhelper-like tool and need support for either of these features, please file a bug against the tool asking it to declare its configuration file with the relevant options in its pkgfile call.

    Beachten Sie, dass debhelper seine Regeln für die Mehrzahl seiner Werkzeuge basierend auf der Nutzungsanalyse über codesearch.debian.org ebenfalls selbst anpasst. Sollten Sie sich auf eine Funktionalität verlassen, wie beispielsweise Architektureinschränkungen für eine gegebene Konfigurationsdatei, die nicht mehr unterstützt wird, so stellen Sie bitte ein Funktionalitätswunsch für diesen Anwendungsfall und sie wird möglicherweise wieder hergestellt.

-
Pakete, die das Bausystem cmake verwenden, sollten die folgenden Änderungen beachten:
  • Das Bausystem cmake gibt jetzt -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON an cmake(1) weiter, womit einige Reproduzierbarkeitsprobleme vermieden werden.
  • Das Bausystem cmake setzt nun die Umgebungsvariable ASMFLAGS falls sie nicht gesetzt ist und ASFLAGS vorhanden ist. Der erstere Name (ASMFLAGS) ist der Name, den cmake erwartet, während der letztere (ASFLAGS) der Name ist, den dpkg-buildpackage(1) verwendet.
  • Das Bausystem cmake verwendet im dh_auto_install(1)-Aufruf jetzt cmake --install anstelle von ninja install. Jede Außerkraftsetzung von dh_auto_install, die Extra-Parameter an das Bausystem der Originalautoren weiterreicht, sollte überprüft werden.
-
Pakete, die das Bausystem meson verwenden, sollten die folgenden Änderungen beachten:
  • Das Bausystem meson übergibt nun --auto-features=enabled an meson.
  • Das Bausystem meson+ninja verwendet im dh_auto_install(1)-Aufruf jetzt meson install anstelle von ninja install. Jede Außerkraftsetzung von dh_auto_install, die Extra-Parameter an das Bausystem der Originalautoren weiterreicht, sollte überprüft werden.
  • Die Datei debian/compat wird nicht mehr als Quelle zur Spezifikation der Debhelper-Kompatibilitätsstufe akzeptiert. Setzen Sie die Kompatibilitätsstufe in dem Feld X-DH-Compat des Source-Abschnitts von debian/control.

    Beachten Sie, dass diese Änderung das erste Mal in Kraft gesetzt wird, wenn Kompatibilitätsstufe 14 als stabil deklariert wird. Damit wird vermieden, Pakete zu beschädigen, die schon zu Kompatibilitätsstufe 14 migriert wurden, während diese Änderung noch experimentell war.

  • Das Werkzeug dh_installtmpfiles führt nun --remove beim Entfernen und --purge beim vollständigen Löschen von Paketen aus. Für Letzteres ist Systemd v256 erforderlich.
  • Das Werkzeug dh_lintian akzeptiert nicht mehr länger architekturabhängige Dateien zur Außerkraftsetzungen für Pakete mit Multi-Arch: same in debian/control, weil diese dann nicht mehr koinstallierbar wären. Fälle, die von diesem Fehler betroffen sind, sollten zu architekturabhängigen Außerkraftsetzungen von lintian(1) wechseln.
Dies ist der empfohlene Betriebsmodus.

Die Änderungen gegenüber v12 sind:

  • Das Bausystem meson+ninja benutzt anstelle von ninja test nun meson test, wenn die Testsuite ausgeführt wird. Alles, was dh_auto_test außer Kraft setzt und zusätzliche Parameter an das Testausführungsprogramm der Ursprungsautoren übergibt, sollte überprüft werden, da meson test auf der Befehlszeile nicht mit ninja test kompatibel ist.
  • Alle Debhelper-ähnlichen Werkzeuge, die auf der offiziellen Debhelper-Bibliothek basieren (einschließlich dh und den offiziellen dh_*-Werkzeugen) akzeptieren keine abgekürzten Befehlsparameter mehr. Gleichzeitig sortiert dh nun Aufrufe zu überflüssigen dh_*-Hilfsprogrammen sogar dann aus, wenn lange Befehlszeilenoptionen angegeben werden.
  • Die ELF-bezogenen Debhelper-Werkzeuge (dh_dwz, dh_strip, dh_makeshlibs, dh_shlibdeps) werden nun standardmäßig nur noch für architekturabhängige Pakete ausgeführt (d. h. sie werden von *-indep-Zielen ausgeschlossen und standardmäßig mit -a übergeben). Falls Sie sie für *-indep-Ziele benötigen, können Sie eine explizite Build-Depends in dh-sequence-elf-tools hinzufügen.
  • Das Drittanbieterbausystem gradle (aus dem Paket gradle-debian-helper) führt nun automatisch eine von den Ursprungsautoren bereitgestellte Testsuite aus. Setzen Sie dh_auto_test außer Kraft, um dieses Verhalten zu unterbinden.
  • Das Werkzeug dh_installman beendet sich vorzeitig, falls es widersprüchliche Definitionen einer Handbuchseite entdeckt. Dies kommt üblicherweise vor, wenn das Bausystem der Ursprungsautoren eine komprimierte Version installiert und das Paket eine nicht komprimierte Version der Handbuchseite in debian/package.manpages auflistet. Meist ist die einfachste Lösung, die Handbuchseite aus debian/package.manpages zu entfernen (davon ausgehend, dass beide Versionen identisch sind).
  • The dh_auto_* helpers now reset the environment variable HOME and the common XDG_* variables. Please see description of the environment variables in "ENVIRONMENT" in debhelper(1) for how this is handled.

    Dieses Funktionalität hat sich zwischen Debhelper 13 und Debhelper 13.2 geändert.

  • Der Befehl dh wird nun einen Fehler ausgeben, falls ein Override- oder Hook-Ziel für einen veralteten Befehl in debian/rules (z.B. override_dh_systemd_enable:) vorhanden ist.
  • Der Befehl dh_missing wird nun auf --fail-missing voreingestellt. Dies lässt sich zu einer nicht-fatalen Warnung zurückändern, indem explizit --list-missing übergeben wird, wie es in Kompatibilitätsstufe 12 war.

    Falls Sie die Warnung gar nicht wollen, lassen Sie bitte den Aufruf von dh_missing weg. Falls Sie den Befehlssequenzer dh benutzen, dann können Sie dies mit einem leeren Override-Ziel in der Datei debian/rules oder dem passenden Paket erledigen. Zum Beispiel:

        # Disable dh_missing
        override_dh_missing:
        
  • Der Befehlssequenzer dh führt nun in der Standardsequenz dh_installtmpfiles aus. dh_installtmpfiles übernimmt die Handhabung von tmpfiles.d-Konfigurationsdateien. Diesbezügliche Funktionalität in dh_installsystemd ist nun deaktiviert.

    Beachten Sie, dass dh_installtmpfiles auf debian/Paket.tmpfiles reagiert, wo dh_installsystemd einen Nahmen ohne das nachfolgende »s« benutzt hat.

  • Viele dh_*-Werkzeuge unterstützen nun eine eingeschränkte Variablenexpandierung per ${foo}-Syntax. In vielen Fällen kann dies benutzt werden, um Pfade zu referenzieren, die entweder Leerzeichen oder dpkg-architecture(1)-Werte enthalten. Obwohl es den Bedarf an dh-exec(1) in einigen Fällen vermindern kann, ist es im Allgemeinen kein Ersatz für dh-exec(1). Falls Sie filtern, umbenennen usw. möchten, wird das Paket weiterhin dh-exec(1) benötigt.

    Bitte lesen Sie "Ersetzungen in Debhelper-Konfigurationsdateien", um mehr über die Syntax und verfügbare Ersetzungsvariablen zu erfahren. An Verfasser von dh_*-Werkzeugen: Die Ersetzung und Expandierung ist Teil der Funktionen filearray und filedoublearray.

  • Der Befehlssequenzer dh wird jetzt alle Hooks und Override-Ziele für dh_auto_test, dh_dwz und dh_strip überspringen, wenn DEB_BUILD_OPTIONS die maßgeblichen nocheck-/nostrip-Optionen aufführt.

    Alle Pakete, die sich darauf verlassen, dass diese Ziele immer ausgeführt werden, sollten die betroffene Logik aus diesen Zielen heraus verschieben. Z. B. müsste nicht-testbezogener Paketierungscode von override_dh_auto_test nach execute_after_dh_auto_build oder execute_before_dh_auto_install verschoben werden.

  • Das Bausystem cmake übergibt nun -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON an cmake(1), um den automatischen Installationsprozess zu beschleunigen. Falls Sie aus irgendeinem Grund beim alten Verhalten bleiben möchten, übersteuern Sie den Schalter:

        dh_auto_configure -- -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=OFF ...
        
Änderungen gegenüber v11 sind:
  • Das Werkzeug dh_makeshlibs erzeugt nun standardmäßig Shlibs-Dateien mit versionierter Abhängigkeit. Das bedeutet, dass -VUpstream-Version (alias -V) nun die Voreinstellung ist.

    Falls eine nicht versionierte Abhängigkeit in der Shlibs-Datei gewünscht wird, kann dies stattdessen durch Übergabe von -VNone erreicht werden. Siehe aber auch dh_makeshlibs(1) für die Vorbehalte gegen nicht versionierte Abhängigkeiten.

  • Die Option -s (--same-arch) wurde entfernt. Bitte verwenden Sie stattdessen -a (--arch).
  • Der Aufruf von dh_clean -k verursacht jetzt einen Fehler statt einer Warnung, es sei missbilligt.
  • Die Option --no-restart-on-upgrade in dh_installinit wurde entfernt. Bitte verwenden Sie den neuen Namen --no-stop-on-upgrade.
  • Es gab einen Fehler in den doit- und ähnlichen Funktionen von Debian::Debhelper::Dh_Lib, der unter einem bestimmten Umstand zum Öffnen einer Shell führte. Dieser Fehler wurde nun entfernt, wodurch Hilfsprogramme, die auf den Fehler setzen, mit der Meldung »command not found« fehlschlagen.
  • --list-missing und --fail-missing in dh_install wurden entfernt. Bitte verwenden Sie dh_missing und die zugehörigen Optionen, die die durch andere Hilfsprogramme installierten Dateien ebenfalls sehen können.
  • Das Hilfsprogramm dh_installinit installiert die Konfiguration für das Init-System Upstart nicht mehr. Stattdessen bricht es das Bauen ab, wenn es eine alte Upstart-Konfigurationsdatei findet. Der Fehler soll den Paketbetreuer daran erinnern, sicherzugehen, dass die mit vorherigen Versionen des Pakets mitgelieferten Konfigdateien (falls vorhanden) sauber entfernt werden.
  • Das Werkzeug dh_installdeb wird die Grundprüfung einiger dpkg-maintscript-helper(1)-Befehle durchführen und sich mit einer Fehlermeldung beenden, falls die Befehle ungültig zu sein scheinen.
  • Das Werkzeug dh_missing wird nun auf --list-missing voreingestellt.
  • Das Werkzeug dh_makeshlibs wird jetzt nur Bibliotheken an dpkg-gensymbols(1) übergeben, falls die ELF-Binärdatei einen SONAME hat (enthält ».so«).
  • Das Werkzeug dh_compress komprimiert keine Beispiele mehr (d. h. alles, was in </usr/share/doc/Paket/examples> installiert ist).
  • Die Standardsequenz in dh enthält nun standardmäßig dh_dwz und dh_installinitramfs. Dies macht die Sequenzen dwz und installinitramfs überflüssig und sie werden mit einem Fehler scheitern. Falls Sie diese Befehle überspringen wollen, fügen Sie bitte ein leeres Override-Ziel in debian/rules ein (z.B. override_dh_dwz:).
  • Die Bausysteme Meson und Autoconf setzen die Variable --libexecdir nicht mehr explizit und verlassen sich auf die Voreinstellung des Bausystems – diese sollte /usr/libexec sein (per FHS 3.0, angenommen in der Debian-Richtlinie 4.1.5).

    Falls ein spezielles Paket der Ursprungsautoren nicht die korrekte Voreinstellung benutzt, kann der Parameter oft manuell per dh_auto_configure(1) übergeben werden, etwa wie im folgenden Beispiel:

        override_dh_auto_configure:
            dh_auto_configure -- --libexecdir=/usr/libexec
        

    Beachten Sie das -- vor dem Parameter --libexecdir.

  • Rückwirkend in debhelper/13.5 entfernt:

    Das dh_installdeb-Werkzeug sollte eigentlich nicht länger die vom Betreuer bereitgestellte conffiles-Datei installieren, weil das als unnötig erachtet wurde. Das remove-on-upgrade aus Dpkg Version 1.20 machte die Datei jedoch wieder relevant und dh_installdeb installiert sie jetzt wieder in den Kompatiblitätsstufen 12 und höher.

  • Das Werkzeug dh_installsystemd beruht nicht mehr auf dh_installinit, um Systemd-Dienste zu handhaben, die über eine SysVinit-Alternative verfügen. In einem solchen Fall müssen jetzt beide Werkzeuge benutzt werden, um sicherzustellen, dass der Dienst sowohl unter SysVinit als auch unter Systemd sauber gestartet wird.

    Falls Sie eine Methode haben, dh_installinit außer Kraft zu setzen (z. B. indem Sie es mit --no-start aufrufen), dann werden Sie jetzt wahrscheinlich auch eine für dh_installsystemd benötigen.

    Diese Änderung lässt dh_installinit ein misc:Pre-Depends für init-system-helpers (>= 1.54~) einspeisen. Bitte stellen Sie sicher, dass das Paket ${misc:Pre-Depends} in seinem Feld Pre-Depends aufführt, bevor Sie ein Upgrade auf Kompatibilitätsstufe 12 durchführen.

  • Das Drittherstellerwerkzeug dh_golang (aus dem Paket dh-golang) akzeptiert jetzt standardmäßig die Variable DH_GOLANG_EXCLUDES für die Quelleninstallation in -dev-Paketen und das nicht nur während des Bauprozesses. Bitte setzen Sie DH_GOLANG_EXCLUDES_ALL auf »false«, um zum vorherigen Verhalten zurückzukehren. Einzelheiten und Beispiele finden Sie unter Debian::Debhelper::Buildsystem::golang(3pm).
  • dh_installsystemduser ist nun per Voreinstellung in der Standard-dh-Sequenz enthalten.
  • Das Bausystem python-distutils ist jetzt entfernt worden. Bitte verwenden Sie stattdessen das Drittanbieterbausystem pybuild.
Von diesem Modus wird abgeraten.

Von der Kompatibilitätsstufe 11 wird für neue Pakete abgeraten, da sie von Funktionalitätswechselwirkungen zwischen dh_installinit und dh_installsystemd betroffen ist, die dazu führen, dass in manchen Fällen Dienste nicht korrekt laufen. Bitte erwägen Sie, stattdessen die Kompatibilitätsstufen 10 oder 12 zu benutzen. Weitere Einzelheiten über das Thema sind in Debian#887904 und <https://lists.debian.org/debian-release/2019/04/msg01442.html> verfügbar.

Änderungen gegenüber v10 sind:

  • dh_installinit installiert keine service- oder tmpfile-Dateien mehr. Es erstellt auch keine Betreuerskripte dafür. Bitte verwenden Sie das neue Hilfsprogramm dh_installsystemd.
  • Die Hilfsprogramme dh_systemd_enable und dh_systemd_start wurden durch das neue Hilfsprogramm dh_installsystemd ersetzt. Aus demselben Grund wurde auch die systemd-Sequenz für dh entfernt. Wenn Sie das Hilfswerkzeug dh_installsystemd deaktivieren möchten, verwenden Sie bitte ein leeres Override-Ziel.

    Bitte beachten Sie, dass sich das Werkzeug dh_installsystemd in manchen Fällen (z.B. bei der Verwendung des Parameters --name) geringfügig anders verhält.

  • dh_installdirs erstellt keine debian/Paket-Verzeichnisse mehr, es sei denn, dies wird ausdrücklich verlangt (oder es muss ein Unterverzeichnis darin erstellt werden).

    Die große Mehrheit aller Pakete wird von dieser Änderung nicht betroffen sein.

  • Das Bausystem makefile übergibt nun INSTALL="install --strip-program=true" an make(1). Davon abgeleitete Bausysteme (z. B. configure oder cmake) sind von dieser Änderung nicht betroffen.
  • Das Bausystem autoconf übergibt nun --runstatedir=/run an ./configure.
  • Das Bausystem cmake übergibt nun -DCMAKE_INSTALL_RUNSTATEDIR=/run an cmake(1).
  • dh_installman wird nun vorzugsweise die Sprache anhand des Pfadnamens statt der Erweiterung bestimmen.
  • dh_auto_install wird jetzt nur das Zielverzeichnis erstellen, das es benötigt. Vorher hätte es die Bauverzeichnisse für alle Pakete erstellt. Dies hat keine Auswirkungen auf Pakete, die nur mit Debhelper-Befehlen bauen, es könnte aber Programmfehler in Befehlen offenlegen, die nicht in Debhelper enthalten sind.
  • Die Hilfsprogramme dh_installdocs, dh_installexamples, dh_installinfo und dh_installman beenden sich jetzt mit Fehlermeldung, falls ihre Konfiguration ein Muster aufweist, das zu nichts passt oder sich auf einen Pfad bezieht, den es nicht gibt.

    Bekannte Ausnahmen umfassen das Bauen mit dem Profil nodoc, bei dem die obigen Werkzeuge stillschweigend fehlschlagende Suchen mit Mustern erlauben, welche zur Angabe von Dokumentation verwendet werden.

  • Die Hilfsprogramme dh_installdocs, dh_installexamples, dh_installinfo und dh_installman akzeptieren nun den Parameter --sourcedir mit derselben Bedeutung wie dh_install. Überdies fallen sie jetzt, so wie dh_install, auf debian/tmp zurück.

    Migrationshinweis: Ein Fehler in Debhelper 11 bis 11.1.5 führte fälschlicherweise dazu, dass dh_installinfo --sourcedir ignoriert hat.

  • Die Bausysteme perl-makemaker und perl-build übergeben -I. nicht mehr an Perl. Pakete, die dieses Verhalten benötigen, können meistens die Umgebungsvariable PERL5LIB als Ersatz verwenden, z. B. durch Eintragen von export PERL5LIB=. in ihre »debian/rules«-Datei (oder dergleichen).
  • PERL_USE_UNSAFE_INC wird jetzt von dh oder den dh_auto_*-Werkzeugen nicht mehr gesetzt. Sie diente als Übergangslösung, um zu verhindern, dass das gleichzeitige Bauen vieler Pakete scheitert.

    Beachten Sie, dass sie irgendwann komplett überholt wird, da die Ursprungsautoren beabsichtigen, die Unterstützung für die Umgebungsvariable PERL_USE_UNSAFE_INC einzustellen. Wenn es so weit ist, wird diese Variable nachträglich auch aus bestehenden Kompatibilitätsstufen entfernt.

  • Das Hilfsprogramm dh_makeshlibs wird nun mit einer Fehlermeldung beendet, falls Objdump nach der Auswertung einer gegebenen Datei einen Rückgabewert ungleich null zurückliefert.
  • Die Werkzeuge dh_installdocs und dh_installexamples können jetzt die meiste Dokumentation in einem anderen Pfad installieren, um die Empfehlung der Debian-Richtlinien §12.3 (seit Version 3.9.7) zu erfüllen.

    Beachten Sie, dass diese Änderung nicht für dieses Quellpaket relevant ist und Sie zur nächsten Änderung springen können, falls ein angegebenes Quellpaket nur ein einziges Binärpaket in debian/control enthält oder keine -doc-Pakete dabei sind.

    Standardmäßig werden diese Werkzeuge nun versuchen, ein »Hauptpaket für die Dokumentation« (ab hier Hauptdokumentationspaket genannt) für jedes -doc-Paket zu bestimmen. Falls sie ein derartiges Hauptdokumentationspaket finden, werden sie nun die Dokumentation in den Pfad /usr/share/doc/Hauptdokumentationspaket im angegebenen Dokumentationspaket installieren. Das heißt, der Pfad kann sich ändern, aber die Dokumentation wird immer noch im -doc-Paket mitgeliefert.

    Die Option --doc-main-package kann benutzt werden, wenn die automatische Erkennung unzureichend ist oder um den Pfad auf seinen vorherigen Wert zurückzusetzen, falls es einen Grund gibt, von der Empfehlung der Debian-Richtlinien abzuweichen.

    Manche Dokumentation wird von dieser Änderung nicht beeinflusst. Diese Ausnahmen umfassen die Copyright-Dateien, README.Debian usw. Diese Dateien werden weiterhin im Pfad /usr/share/doc/Paket installiert.

  • Die Werkzeuge dh_strip und dh_shlibdeps verwenden keine Dateinamenmuster mehr, um zu bestimmen, welche Dateien verarbeitet werden. Stattdessen öffnen sie die Datei und suchen nach einem ELF-Header, um zu bestimmen, ob eine übergebene Datei ein gemeinsam benutztes Objekt oder ein ausführbares binäres Programm ist.

    Diese Änderung kann dazu führen, dass mehr Dateien als vorher verarbeitet werden.

Änderungen gegenüber v9 sind:
  • dh_installinit wird keine Datei namens debian/Paket mehr als Init-Skript installieren.
  • dh_installdocs wird mit einem Fehler fehlschlagen, falls es Links entdeckt, die mit --link-doc zwischen Paketen der Architektur »all« und nicht-»all« erzeugt wurden, da d binNMUs beschädigt.
  • dh_installdeb installiert keine vom Paketbetreuer bereitgestellte debian/Paket.shlibs-Datei mehr. Dies wird stattdessen von dh_makeshlibs erledigt.
  • dh_installwm weigert sich, ein beschädigtes Paket zu erstellen, falls keine Handbuchseite gefunden wird (erforderlich, um die Alternative zum X-Window-Manager zu registrieren).
  • --parallel ist Debhelpers Voreinstellung für alle Bausysteme, die paralleles Bauen unterstützen. Dies kann entweder durch Verwendung von --no-parallel oder durch Übergabe von --max-parallel mit einem Wert von 1 deaktiviert werden.
  • Der Befehl dh wird keinen der veralteten Parameter zur »manuellen Sequenzsteuerung« (--before, --after, etc.) akzeptieren. Bitte verwenden Sie stattdessen Aufhebungsziele (override targets).

    Nachträglich auf frühere Kompatibilitätsstufen angewandt: dh akzeptiert seit Debhelper/12.4 nichts davon mehr.

  • Der Befehl dh wird keine Logdateien mehr benutzen, um zu protokollieren, welche Befehle ausgeführt worden sind. Er wird aber trotzdem nachverfolgen, ob er selbst schon einmal in der Bausequenz gelaufen ist und sie ggf. überspringen.

    Die wichtigsten Auswirkungen davon sind:

  • Hierdurch wird die Fehlersuche bei den Sequenzen install und/oder binary einfacher, da sie nun einfach erneut ausgeführt werden können (ohne, dass ein vollständiger »Aufräum- und Neubau«-Durchgang erforderlich ist).
  • Der Pferdefuß hier liegt darin, dass dh_* nun nur noch nachverfolgt, was in einem einzelnen Override-Ziel geschieht. Wenn alle Aufrufe eines angegebenen dh_cmd-Befehls im selben Override-Ziel stattfinden, wird alles wie zuvor funktionieren.

    Beispiel, bei dem es schiefgehen kann:

      override_dh_foo:
        dh_foo -pmein-Paket
      override_dh_bar:
        dh_bar
        dh_foo --remaining
        

    In diesem Fall wird der Aufruf von dh_foo --remaining außerdem mein-Paket enthalten, da dh_foo -pmein-Paket in einem separaten Override-Ziel ausgeführt wird. Dieses Problem ist nicht auf --remaining begrenzt, es umfasst außerdem -a, -i, etc.

  • Der Befehl dh_installdeb maskiert nun die Zeilen in der Konfigurationsdatei maintscript für die Shell. Dies war der ursprüngliche Gedanke, aber es funktionierte nicht, wie es sollte und die Pakete begannen, sich auf die unvollständige Shell-Maskierung zu verlassen (z.B. das Setzen von Dateinamen in Anführungszeichen).
  • Voreinstellung für den Befehl dh_installinit ist nun --restart-after-upgrade. Für Pakete, die das vorhergehende Verhalten erfordern, verwenden Sie bitte --no-restart-after-upgrade.
  • Die autoreconf-Sequenz ist nun standardmäßig aktiviert. Bitte übergeben Sie --without autoreconf an dh, falls dies für ein angegebenes Paket nicht erwünscht ist.
  • Die systemd-Sequenz ist nun standardmäßig aktiviert. Bitte übergeben Sie --without systemd an dh, falls dies für ein angegebenes Paket nicht erwünscht ist.
  • Nachträglich entfernt: dh erstellt das Bauverzeichnis des Pakets nicht mehr, wenn die Ausführung von Debhelper-Befehlen übersprungen wird. Dies hat keine Auswirkungen auf Pakete, die nur mit Debhelper-Befehlen bauen, es könnte aber Fehler in Befehlen offenlegen, die nicht in Debhelper enthalten sind.

    Diese Kompatibilitätsfunktionalität hatte einen Fehler seit ihrer Aufnahme in Debhelper/9.20130516, der sie im Kompatibilitätsmodus 9 und älter zum Scheitern brachte. Da es in den fünf Jahren ihres Bestehens keine Berichte zu Problemen gab, die von diesem Fehler verursacht wurden, wurde sie nicht überarbeitet, sondern entfernt.

Änderungen gegenüber v8 sind:
  • Multiarch-Unterstützung. Insbesondere gibt dh_auto_configure Multiarch-Verzeichnisse an autoconf in --libdir und --libexecdir weiter.
  • dh kennt die üblichen Abhängigkeiten zwischen den Zielen in debian/rules. Daher wird »dh binary« alle »build«-, »build-arch«-, »build-indep«-, »install«-Ziele etc. ausführen, die in der Regeldatei stehen. Es ist nicht nötig, explizit ein binäres Ziel mit expliziten Abhängigkeiten zu den anderen Zielen zu definieren.
  • dh_strip komprimiert Debug-Symboldateien, um die Größe der installierten »-dbg«-Paketen zu verringern.
  • dh_auto_configure enthält keinen Quellpaketnamen in --libexecdir, wenn autoconf benutzt wird.
  • Standardmäßig aktiviert dh nicht --with=python-support.

    (Hinfällig, da das Werkzeug dh_pysupport aus Debian Stretch entfernt wurde. Seit Debhelper/10.3 aktiviert dh diese Sequenzerweiterung unabhängig von der Kompatibilitätsstufe nicht mehr.)

  • Alle dh_auto_*-Debhelper-Programme und dh setzen Umgebungsvariablen, die durch dpkg-buildflags aufgelistet werden, sofern sie nicht bereits gesetzt sind.
  • dh_auto_configure übergibt CFLAGS, CPPFLAGS und LDFLAGS von dpkg-buildflags an Perls Makefile.PL und Build.PL..
  • dh_strip legt getrennte Fehlersuchsymbole an einer Stelle ab, die auf ihrer Baukennzahl basiert.
  • Ausführbare Debhelper-Konfigurationsdateien werden ausgeführt und ihre Ausgabe wird als Konfiguration benutzt.

Dieser Modus ist missbilligt.

Änderungen gegenüber v7 sind:
  • Befehle werden fehlschlagen anstatt zu warnen, wenn ihnen unbekannte Optionen übergeben werden.
  • dh_makeshlibs führt dpkg-gensymbols auf allen gemeinsamen Bibliotheken aus, für die es Shlib-Dateien generiert, wobei Bibliotheken mit -X ausgeschlossen werden können. Außerdem werden dpkg-gensymbols Bibliotheken an unüblichen Orten übergeben, ohne dass es diese vorher verarbeitet haben wird, was dazu führen kann, dass sich einige Pakete nicht bauen lassen.
  • dh erfordert, dass die auszuführende Sequenz als erster Parameter angegeben wird und sämtliche Schalter danach kommen. Das heißt, Sie schreiben nicht »dh --foo $@«, sondern »dh $@ --foo«.
  • dh_auto_* bevorzugt Perls Module::Build gegenüber Makefile.PL.

Dieser Modus ist missbilligt.

Dieser Modus ist missbilligt.

Dies ist die unterste unterstützte Kompatibilitätsstufe.

Falls Sie ein Upgrade von einer vorhergehenden Kompatibilitätsstufe durchführen, überprüfen Sie bitte debhelper-obsolete-compat(7).

SIEHE AUCH

debhelper-obsolete-compat(7)
Führen Sie ein Upgrade von einer (jetzt) obsoleten Kompatibilitätsstufe aus? Dieses Dokument enthält die Upgrade-Prüflisten bis zur ältesten unterstützten Stufe.
debhelper(7)
Generelle Informationen über das Debhelper-Rahmenwerk. Dieses Dokument beschreibt auch, wie Sie die von Ihnen gewählte Debhelper-Kompatibilitätsstufe deklarieren.

Ü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

AUTOREN

Niels Thykier <niels@thykier.net>

Joey Hess

2025-01-03 13.23~bpo12+1