Provided by: dpkg_1.22.18ubuntu3_amd64 bug

BEZEICHNUNG

       dpkg-maintscript-helper - Bekannte Einschränkungen in Dpkg in Betreuerskripten umgehen

ÜBERSICHT

       dpkg-maintscript-helper Befehl [Parameter …] -- Betr-Skript-Parameter

BEFEHLE UND PARAMETER

       supports Befehl
       rm_conffile Conffile [vorhergehende_Version [Paket]]
       mv_conffile alte_Conffile neue_Conffile [vorhergehende_Version [Paket]]
       symlink_to_dir Pfadname altes_Ziel [vorhergehende_Version [Paket]]
       dir_to_symlink Pfadname neues_Ziel [vorhergehende_Version [Paket]]

BESCHREIBUNG

       Dieses  Programm  wurde  so  entworfen,  dass  es  in  Betreuerskripten ausgeführt werden kann, um einige
       Aufgaben zu erledigen, die dpkg (noch)  nicht  selbst  erledigen  kann,  entweder  aufgrund  von  Design-
       Entscheidungen oder aufgrund aktueller Einschränkungen.

       Viele  dieser  Aufgaben benötigen koordinierte Aktionen aus mehreren Betreuerskripten (preinst, postinst,
       prerm, postrm). Um Fehler zu vermeiden, wird der gleiche Aufruf einfach in alle Skripte eingefügt und das
       Programm wird sein  Verhalten  automatisch  abhängig  von  der  Variable  DPKG_MAINTSCRIPT_NAME  und  den
       Argumenten im Betreuerskript, die Sie nach einem doppelten Bindestrich übergeben müssen, anpassen.

       Dieses Programm wurde in Dpkg 1.15.7 hinzugefügt.

GEMEINSAME PARAMETER

       vorhergehende_Version
           Definiert  die  letzte  Version  des Pakets, dessen Upgrade die Aktion auslösen soll. Es ist wichtig,
           vorhergehende_Version korrekt zu berechnen, so dass die Aktionen korrekt  ausgeführt  werden,  selbst
           falls  der  Benutzer  das Paket mit einer lokalen Version neu gebaut hat. Falls vorhergehende_Version
           leer ist oder weggelassen wurde, wird  die  Aktion  bei  jedem  Upgrade  versucht  (Hinweis:  Es  ist
           sicherer, die Version anzugeben und damit die Aktion nur einmal versuchen zu lassen).

           Falls  die  Conffile in mehreren Versionen nicht ausgeliefert wurde und Sie jetzt die Betreuerskripte
           anpassen, um die überflüssige Datei zu entfernen, sollte vorhergehende_Version auf  die  Version  des
           Pakets gesetzt werden, die Sie jetzt zusammenstellen, nicht auf die erste Version des Pakets, bei dem
           die Conffile fehlte. Dies trifft genauso auch auf alle anderen Aktionen zu.

           Wird    beispielsweise   eine   Conffile   in   Version   2.0-1   eines   Pakets   entfernt,   sollte
           vorhergehende_Version auf 2.0-1~ gesetzt werden. Dies führt dazu, dass die  Conffile  entfernt  wird,
           selbst  falls  der  Benutzer die vorhergehende Version 1.0-1 als 1.0-1local1 neu gebaut hat. Oder ein
           Paket, das einen Pfad  von  einem  Symlink  (das  in  Version  1.0-1  ausgeliefert  wurde)  zu  einem
           Verzeichnis  (ausgeliefert  in  Version  2.0-1)  wechselt,  aber  die  eigentliche  Umstellung in den
           Betreuerskripten in Version 3.0-1 durchführt, sollte vorhergehende_Version auf 3.0-1~ setzen.

       Paket
           Der Paketname, dem der Pfadname gehört bzw. die Pfadnamen gehören. Wenn das Paket „Multi-Arch:  same“
           ist,   muss   dieser   Parameter   die  Architekturspezifikation  enthalten,  andernfalls  sollte  er
           normalerweise die Architekturspezifikation nicht enthalten (da dies Cross-Grades verhindern oder  die
           Umstellung  von architekturspezifisch auf die Architektur all oder umgekehrt verhindern würde). Falls
           dieser Parameter leer oder nicht  angegeben  ist,  werden  die  (von  dpkg  bei  der  Ausführung  der
           Betreuerskripte  gesetzten)  Umgebungsvariablen  DPKG_MAINTSCRIPT_PACKAGE  und  DPKG_MAINTSCRIPT_ARCH
           verwandt, um den Architektur-spezifizierten Paketnamen zu erstellen.

       --  Alle Parameter der Betreuerskripte müssen nach -- an das Programm weitergeleitet werden.

CONFFILE-BEZOGENE AUFGABEN

       Beim Upgrade eines Pakets wird dpkg eine Conffile (eine Konfigurationsdatei, bei der dpkg die  Änderungen
       des  Benutzers  erhalten  soll)  nicht  automatisch  entfernen,  falls  sie  nicht in der neueren Version
       enthalten ist. Es gibt zwei Hauptgründe dafür; der erste ist, dass die Conffile  versehentlich  entfallen
       sein und die nächste Version sie wieder herstellen könnte und die Benutzer die Änderung nicht weggeworfen
       sehen  wollen.  Der  zweite  besteht  darin,  dass  Paketen erlaubt werden soll, von einer Dpkg-betreuten
       Conffile auf eine Datei, die von den Betreuerskripten des Pakets, normalerweise mit  einem  Werkzeug  wie
       Debconf oder Ucf, verwaltet wird, umzustellen.

       Das  bedeutet,  falls  ein  Paket  eine  Conffile  umbenennen  oder entfernen soll, muss es dies explizit
       durchführen und dpkg-maintscript-helper kann dazu verwandt werden, eine sanfte Löschung und  Verschiebung
       von Conffiles innerhalb von Betreuerskripten durchzuführen.

   Eine Conffile entfernen
       Hinweis: In den meisten Fällen kann dies durch den Schalter "remove-on-upgrade" in DEBIAN/conffiles (seit
       Dpkg 1.20.6) ersetzt werden, siehe deb-conffiles(5).

       Falls eine Conffile komplett entfernt wird, sollte sie von der Platte entfernt werden, falls der Benutzer
       sie  nicht  verändert  hat.  Falls  es  lokale Anpassungen gibt, sollten diese erhalten werden. Falls das
       Upgrade des Pakets abgebrochen wird, sollte die neuerdings veraltete Conffile nicht verschwinden.

       All dies wird durch Einsetzen der folgenden Shell-Schnipsel in die Betreuerskripte preinst, postinst  und
       postrm implementiert:

            dpkg-maintscript-helper rm_conffile \
               Conffile vorhergehende_Version Paket -- "$@"

       Conffile ist der Dateiname der zu entfernenden Conffile.

       Aktuelle Implementierung: im preinst wird geprüft, ob die Conffile geändert wurde. Dann wird sie entweder
       in Conffile.dpkg-remove (falls sie nicht geändert wurde) oder in Conffile.dpkg-backup (falls sie geändert
       wurde)  umbenannt. Im postinst wird Letztere in Conffile.dpkg-bak umbenannt und als Referenz behalten, da
       sie Benutzeränderungen enthält, während Erstere entfernt wird. Falls das Upgrade des  Pakets  abgebrochen
       wird,  reinstalliert  postrm  die  ursprüngliche Conffile. Während des vollständigen Löschens wird postrm
       auch die bisher behaltene Datei .dpkg-bak entfernen.

   Eine Conffile umbenennen
       Falls eine Conffile von einem Ort zu einem anderen verschoben wird, müssen Sie  sicherstellen,  dass  Sie
       auch  alle  Änderungen  des  Benutzers mit übernehmen. Anfänglich erscheint dies als einfache Änderung am
       Skript preinst, allerdings wird dies dazu führen, dass der  Benutzer  von  dpkg  aufgefordert  wird,  die
       Bearbeitung der Conffile zu bestätigen, obwohl sie für diese gar nicht verantwortlich sind.

       Sanfte  Umbenennung  kann  durch  Einsetzen der folgenden Shell-Schnipsel in die Betreuerskripte preinst,
       postinst und postrm implementiert werden:

            dpkg-maintscript-helper mv_conffile \
               alte_Conffile neue_Conffile vorhergehende_Version Paket -- "$@"

       alte_Conffile und neue_Conffile sind der alte und der neue Name der umzubenennenden Conffile.

       Aktuelle Implementierung: das preinst überprüft, ob die Conffile verändert wurde, falls ja, verbleibt sie
       am Platz, andernfalls wird sie in alte_Conffile.dpkg-remove umbenannt. Bei der Konfiguration entfernt das
       postinst alte_Conffile.dpkg-remove und benennt alte_Conffile in  neue_Conffile  um,  falls  alte_Conffile
       noch    existiert.    Falls    abort-upgrade/abort-install    eintritt,   benennt   das   postrm   wieder
       alte_Conffile.dpkg-remove in alte_Conffile zurück, falls notwendig.

SYMLINK- UND VERZEICHNISUMWANDLUNGEN

       Beim Upgrade eines Pakets wird dpkg einen Symlink nicht automatisch  in  ein  Verzeichnis  und  umgekehrt
       umwandeln.  Installationen  älterer  Versionen  („downgrades“)  werden  nicht  unterstützt  und  der Pfad
       verbleibt wie er ist.

       Hinweis: Die während dieser Schalter erstellten Symlinks und Verzeichnisse  müssen  in  dem  neuen  Paket
       ausgeliefert werden oder dpkg wird nicht in der Lage sein, sie beim endgültigen Löschen zu entfernen.

   Einen Symlink in ein Verzeichnis umwandeln
       Falls ein Symlink in ein echtes Verzeichnis umgewandelt wird, müssen Sie vor dem Entpacken sicherstellen,
       dass  der  Symlink  entfernt  wird.  Anfänglich  erscheint  dies als einfache Änderung am Skript preinst,
       allerdings wird dies zu einigen Problemen führen, falls der Administrator lokale Anpassungen des Symlinks
       durchgeführt hat oder falls ein Downgrade des Pakets auf eine alte Version durchgeführt wird.

       Sanfte Umbenennung kann durch Einsetzen der folgenden Shell-Schnipsel  in  die  Betreuerskripte  preinst,
       postinst und postrm implementiert werden:

            dpkg-maintscript-helper symlink_to_dir \
               Pfadname altes_Ziel vorhergehende_Version Paket -- "$@"

       Pfadname ist der absolute Name des alten Symlinks (der Pfad wird am Ende der Installation ein Verzeichnis
       sein)  und  altes_Ziel  ist  der  Name des Ziels des vorherigen Symlinks unter Pfadname. Es kann entweder
       absolut oder relativ zum Verzeichnis, das Pfadname enthält, sein.

       Aktuelle Implementierung: das preinst überprüft, ob der Symlink existiert und auf altes_Ziel zeigt. Falls
       dies nicht der Fall ist, bleibt  der  Symlink  existent,  andernfalls  wird  er  in  Pfadname.dpkg-backup
       umbenannt.  Bei  der Konfiguration entfernt das postinst Pfadname.dpkg-backup, falls Pfadname.dpkg-backup
       noch  ein  Symlink  ist.  Falls  abort-upgrade/abort-install  eintritt,   benennt   das   postrm   wieder
       Pfadname.dpkg-backup in Pfadname zurück, falls notwendig.

   Ein Verzeichnis in einen Symlink umwandeln
       Falls  ein  echtes  Verzeichnis  in  einen  Symlink  umgewandelt  wird,  müssen  Sie  vor  dem  Entpacken
       sicherstellen, dass das Verzeichnis entfernt wird. Anfänglich erscheint dies  als  einfache  Änderung  am
       Skript  preinst,  allerdings  wird  dies  zu  einigen  Problemen führen, falls das Verzeichnis Conffiles,
       Pfadnamen anderer Pakete oder lokal erstellte Pfadnamen  enthält  oder  wenn  ein  Downgrade  des  Pakets
       durchgeführt wird.

       Sanfte  Umwandlung  kann  durch  Einsetzen  der folgenden Shell-Schnipsel in die Betreuerskripte preinst,
       postinst und postrm implementiert werden:

            dpkg-maintscript-helper dir_to_symlink \
               Pfadname neues_Ziel vorhergehende_Version Paket -- "$@"

       Pfadname ist der absolute Name des alten Verzeichnisses (der Pfad  wird  am  Ende  der  Installation  ein
       Symlink  sein)  und  neues_Ziel  ist das Ziel des neuen Symlinks unter Pfadname. Es kann entweder absolut
       oder relativ zum Verzeichnis, das Pfadname enthält, sein.

       Aktuelle Implementierung: das preinst überprüft, ob das Verzeichnis existiert, keine Conffiles, Pfadnamen
       anderer Pakete oder lokal erstellte Pfadnamen  enthält.  Falls  nicht,  bleibt  es  an  Ort  und  Stelle,
       andernfalls  wird  es in Pfadname.dpkg-backup umbenannt und ein leeres Vorbereitungsverzeichnis mit Namen
       Pfadname erstellt  und  durch  eine  Datei  markiert,  so  dass  Dpkg  es  nachverfolgen  kann.  Bei  der
       Konfiguration  beendet  postinst  die  Umstellung,  falls  Pfadname..dpkg-backup noch ein Verzeichnis und
       Pfadname   noch   das   Vorbereitungsverzeichnis   ist.   Es    entfernt    die    Markierungsdatei    im
       Vorbereitungsverzeichnis,  verschiebt  die  neu  erstellten  Dateien  im  Vorbereitungsverzeichnis in das
       Symlink-Ziel neues_Ziel/, ersetzt das jetzt leere Vorbereitungsverzeichnis Pfadname durch  einen  Symlink
       auf  neues_Ziel  und  entfernt Pfadname..dpkg-backup. Falls abort-upgrade/abort-install eintritt, benennt
       das postrm wieder Pfadname.dpkg-backup in Pfadname zurück, falls notwendig.

INTEGRATION IN PAKETE

       Bei  der  Benutzung  der  Paketierungshelfer  prüfen  Sie  bitte,  ob   eine   native   dpkg-maintscript-
       helper-Integration  existiert.  Hierdurch  könnte Ihr Aufwand verringert werden. Lesen Sie beispielsweise
       dh_installdeb(1).

       Da  dpkg-maintscript-helper  im  preinst  verwandt  wird,  benötigt  der  bedingungslose   Einsatz   eine
       prä-Abhängigkeit  (pre-dependency), um sicherzustellen, dass die Mindestversion von dpkg bereits entpackt
       wurde. Die benötigte Version hängt vom verwandten Befehl ab, für rm_conffile und mv_conffile  lautet  sie
       1.15.7.2, für symlink_to_dir und dir_to_symlink lautet sie 1.17.14:

        Pre-Depends: dpkg (>= 1.17.14)

       In  vielen  Fällen  sind aber die Ausführungen des Programms für das Paket nicht kritisch und statt einer
       prä-Abhängigkeit soll das Programm nur aufgerufen werden, falls bekannt ist, dass  der  benötigte  Befehl
       vom derzeit installierten dpkg unterstützt wird:

            if dpkg-maintscript-helper supports Befehl; then
               dpkg-maintscript-helper Befehl …
            fi

       Der  Befehl  supports liefert im Erfolgsfall 0, ansonsten 1 zurück. Der Befehl supports überprüft, ob die
       durch Dpkg gesetzten und vom Skript benötigten Umgebungsvariablen vorhanden sind und  betrachtet  es  als
       Fehlschlag, falls die Umgebung nicht ausreichend ist.

UMGEBUNG

       DPKG_ROOT
           Falls gesetzt wird dies als Dateisystemwurzelverzeichnis verwandt.

       DPKG_ADMINDIR
           Falls gesetzt wird dies als Datenverzeichnis von dpkg verwandt.

       DPKG_COLORS
           Setzt  den Farbmodus (seit Dpkg 1.19.1). Die derzeit unterstützten Werte sind: auto (Vorgabe), always
           und never.

SIEHE AUCH

       dh_installdeb(1).

ÜBERSETZUNG

       Die deutsche Übersetzung wurde 2004, 2006-2025 von  Helge  Kreutzmann  <debian@helgefjell.de>,  2007  von
       Florian  Rehnisch  <eixman@gmx.de>  und  2008  von  Sven  Joachim  <svenjoac@gmx.de>  angefertigt.  Diese
       Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2  oder  neuer  für
       die Kopierbedingungen. Es gibt KEINE HAFTUNG.

1.22.18                                            2025-04-28                         dpkg-maintscript-helper(1)