focal (1) dpkg-maintscript-helper.1.gz

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.

       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.