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 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 -- "$@"
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 -- "$@"
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 -- "$@"
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 -- "$@"
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
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-2023 von Helge Kreutzmann <[email protected]>, 2007 von Florian Rehnisch <[email protected]> und 2008 von Sven Joachim <[email protected]> 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.2023-05-11 | 1.21.22 |