Provided by: dpkg_1.19.7ubuntu3.2_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.

GEMEINSAME PARAMETER

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

              Falls das 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  das  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 das 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. Wenn das Paket „Multi-Arch: same“ ist, muss
              dieser Parameter die Architektur-Spezifikation  enthalten,  andernfalls  sollte  er
              normalerweise  die  Architektur-Spezifikation 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 ein Conffile (eine Konfigurationsdatei, bei der dpkg
       die Änderungen des Benutzers erhalten soll) nicht automatischen 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
       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   bennent
       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.

   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  Pfadnbame  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 pre-Abhängigkeit (pre-dependency), um sicherzustellen, dass  die  Mindestversion  von
       dpkg  breits  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 pre-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 command; then
               dpkg-maintscript-helper command …
           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_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-2019 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.