354 lines
17 KiB
HTML
354 lines
17 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of dpkg-maintscript-helper</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>dpkg-maintscript-helper</H1>
|
|
Section: dpkg-Programmsammlung (1)<BR>Updated: 2020-03-23<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>BEZEICHNUNG</H2>
|
|
|
|
dpkg-maintscript-helper - Bekannte Einschränkungen in Dpkg in
|
|
Betreuerskripten umgehen
|
|
<A NAME="lbAC"> </A>
|
|
<H2>ÜBERSICHT</H2>
|
|
|
|
<B>dpkg-maintscript-helper</B> <I>Befehl</I> [<I>Parameter</I> …] <B>--</B>
|
|
<I>Betr-Skript-Parameter</I> …
|
|
<A NAME="lbAD"> </A>
|
|
<H2>BEFEHLE UND PARAMETER</H2>
|
|
|
|
<P>
|
|
|
|
<B>supports</B> <I>Befehl</I>
|
|
<P>
|
|
|
|
<B>rm_conffile</B> <I>Conffile</I> [<I>vorhergehende_Version</I> [<I>Paket</I>]]
|
|
<P>
|
|
|
|
<B>mv_conffile</B> <I>alte_Conffile</I> <I>neue_Conffile</I> [<I>vorhergehende_Version</I>
|
|
[<I>Paket</I>]]
|
|
<P>
|
|
|
|
<B>symlink_to_dir</B> <I>Pfadname</I> <I>altes_Ziel</I> [<I>vorhergehende_Version</I>
|
|
[<I>Paket</I>]]
|
|
<P>
|
|
|
|
<B>dir_to_symlink</B> <I>Pfadname</I> <I>neues_Ziel</I> [<I>vorhergehende_Version</I>
|
|
[<I>Paket</I>]]
|
|
<A NAME="lbAE"> </A>
|
|
<H2>BESCHREIBUNG</H2>
|
|
|
|
<P>
|
|
|
|
Dieses Programm wurde so entworfen, dass es in Betreuerskripten ausgeführt
|
|
werden kann, um einige Aufgaben zu erledigen, die <B>dpkg</B> (noch) nicht
|
|
selbst erledigen kann, entweder aufgrund von Design-Entscheidungen oder
|
|
aufgrund aktueller Einschränkungen.
|
|
<P>
|
|
|
|
Viele dieser Aufgaben benötigen koordinierte Aktionen aus mehreren
|
|
Betreuerskripten (<B>preinst</B>, <B>postinst</B>, <B>prerm</B>, <B>postrm</B>). 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
|
|
<B>DPKG_MAINTSCRIPT_NAME</B> und den Argumenten im Betreuerskript, die Sie nach
|
|
einem doppelten Bindestrich übergeben müssen, anpassen.
|
|
<A NAME="lbAF"> </A>
|
|
<H2>GEMEINSAME PARAMETER</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="1"><I>vorhergehende_Version</I><DD>
|
|
Definiert die letzte Version des Pakets, dessen Upgrade die Operation
|
|
auslösen soll. Es ist wichtig, <I>vorhergehende_Version</I> korrekt zu
|
|
berechnen, so dass die Operationen korrekt ausgeführt werden, selbst falls
|
|
der Benutzer das Paket mit einer lokalen Version neugebaut hat. Falls
|
|
<I>vorhergehende_Version</I> 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).
|
|
<P>
|
|
Falls das Conffile in mehreren Versionen nicht ausgeliefert wurde und Sie
|
|
jetzt die Betreuerskripte anpassen, um die überflüssige Datei zu entfernen,
|
|
sollte <I>vorhergehende_Version</I> 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.
|
|
<P>
|
|
Wird beispielsweise eine Conffile in Version <B>2.0-1</B> eines Pakets entfernt,
|
|
sollte <I>vorhergehende_Version</I> auf <B>2.0-1~</B> gesetzt werden. Dies führt
|
|
dazu, dass das Conffile entfernt wird, selbst falls der Benutzer die
|
|
vorhergehende Version <B>1.0-1</B> als <B>1.0-1local1</B> neu gebaut hat. Oder ein
|
|
Paket, das einen Pfad von einem Symlink (das in Version <B>1.0-1</B>
|
|
ausgeliefert wurde) zu einem Verzeichnis (ausgeliefert in Version <B>2.0-1</B>)
|
|
wechselt, aber die eigentliche Umstellung in den Betreuerskripten in Version
|
|
<B>3.0-1</B> durchführt, sollte <I>vorhergehende_Version</I> auf <B>3.0-1~</B> setzen.
|
|
<DT id="2"><I>Paket</I><DD>
|
|
Der Paketname, dem der Pfadname gehört. Wenn das Paket BqMulti-Arch: same"
|
|
ist, muss dieser Parameter die Architektur-Spezifikation enthalten,
|
|
andernfalls sollte er normalerweise die Architektur-Spezifikation <B>nicht</B>
|
|
enthalten (da dies Cross-Grades verhindern oder die Umstellung von
|
|
architekturspezifisch auf die Architektur <B>all</B> oder umgekehrt verhindern
|
|
würde). Falls dieser Parameter leer oder nicht angegeben ist, werden die
|
|
(von <B>dpkg</B> bei der Ausführung der Betreuerskripte gesetzten)
|
|
Umgebungsvariablen <B>DPKG_MAINTSCRIPT_PACKAGE</B> und <B>DPKG_MAINTSCRIPT_ARCH</B>
|
|
verwandt, um den Architektur-spezifizierten Paketnamen zu erstellen.
|
|
<DT id="3"><B>--</B><DD>
|
|
Alle Parameter der Betreuerskripte müssen nach <B>--</B> an das Programm
|
|
weitergeleitet werden.
|
|
</DL>
|
|
<A NAME="lbAG"> </A>
|
|
<H2>CONFFILE-BEZOGENE AUFGABEN</H2>
|
|
|
|
<P>
|
|
|
|
Beim Upgrade eines Pakets wird <B>dpkg</B> ein Conffile (eine
|
|
Konfigurationsdatei, bei der <B>dpkg</B> 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.
|
|
<P>
|
|
|
|
Das bedeutet, falls ein Paket eine Conffile umbenennen oder entfernen soll,
|
|
muss es dies explizit durchführen und <B>dpkg-maintscript-helper</B> kann dazu
|
|
verwandt werden, eine sanfte Löschung und Verschiebung von Conffiles
|
|
innerhalb von Betreuerskripten durchzuführen.
|
|
<A NAME="lbAH"> </A>
|
|
<H3>Eine Conffile entfernen</H3>
|
|
|
|
<P>
|
|
|
|
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.
|
|
<P>
|
|
|
|
All dies wird durch Einsetzen der folgenden Shell-Schnipsel in die
|
|
Betreuerskripte <B>preinst</B>, <B>postinst</B> und <B>postrm</B> implementiert:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper rm_conffile \
|
|
<BR> <I>Conffile</I> <I>vorhergehende_Version</I> <I>Paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>Conffile</I> ist der Dateiname der zu entfernenden Conffile.
|
|
<P>
|
|
|
|
Aktuelle Implementierung: im <B>preinst</B> wird geprüft, ob die Conffile
|
|
geändert wurde. Dann wird sie entweder in <I>Conffile</I><B>.dpkg-remove</B> (falls
|
|
sie nicht geändert wurde) oder in <I>Conffile</I><B>.dpkg-backup</B> (falls sie
|
|
geändert wurde) umbenannt. Im <B>postinst</B> wird letztere in
|
|
<I>Conffile</I><B>.dpkg-bak</B> umbenannt und als Referenz behalten, da sie
|
|
Benutzeränderungen enthält, während erstere entfernt wird. Falls das Upgrade
|
|
des Pakets abgebrochen wird, reinstalliert <B>postrm</B> die ursprüngliche
|
|
Conffile. Während des vollständigen Löschens wird <B>postrm</B> auch die bisher
|
|
behaltene Datei <B>.dpkg-bak</B> entfernen.
|
|
<A NAME="lbAI"> </A>
|
|
<H3>Eine Conffile umbenennen</H3>
|
|
|
|
<P>
|
|
|
|
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
|
|
<B>preinst</B>, allerdings wird dies dazu führen, dass der Benutzer von <B>dpkg</B>
|
|
aufgefordert wird, die Bearbeitung der Conffile zu bestätigen, obwohl sie
|
|
für diese gar nicht verantwortlich sind.
|
|
<P>
|
|
|
|
Sanfte Umbenennung kann durch Einsetzen der folgenden Shell-Schnipsel in die
|
|
Betreuerskripte <B>preinst</B>, <B>postinst</B> und <B>postrm</B> implementiert werden:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper mv_conffile \
|
|
<BR> <I>alte_Conffile</I> <I>neue_Conffile</I> <I>vorhergehende_Version</I> <I>Paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>alte_Conffile</I> und <I>neue_Conffile</I> sind der alte und der neue Name der
|
|
umzubenennenden Conffile.
|
|
<P>
|
|
|
|
Aktuelle Implementierung: das <B>preinst</B> überprüft, ob die Conffile
|
|
verändert wurde, falls ja, verbleibt sie am Platz, andernfalls wird sie in
|
|
<I>alte_Conffile</I><B>.dpkg-remove</B> umbenannt. Bei der Konfiguration entfernt
|
|
das <B>postinst</B> <I>alte_Conffile</I><B>.dpkg-remove</B> und bennent <I>alte_Conffile</I>
|
|
in <I>neue_Conffile</I> um, falls <I>alte_Conffile</I> noch existiert. Falls
|
|
abort-upgrade/abort-install eintritt, benennt das <B>postrm</B> wieder
|
|
<I>alte_Conffile</I><B>.dpkg-remove</B> in <I>alte_Conffile</I> zurück, falls notwendig.
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>SYMLINK- UND VERZEICHNISUMWANDLUNGEN</H2>
|
|
|
|
Beim Upgrade eines Pakets wird <B>dpkg</B> 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.
|
|
<A NAME="lbAK"> </A>
|
|
<H3>Einen Symlink in ein Verzeichnis umwandeln</H3>
|
|
|
|
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 <B>preinst</B>, 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.
|
|
<P>
|
|
|
|
Sanfte Umbenennung kann durch Einsetzen der folgenden Shell-Schnipsel in die
|
|
Betreuerskripte <B>preinst</B>, <B>postinst</B> und <B>postrm</B> implementiert werden:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper symlink_to_dir \
|
|
<BR> <I>Pfadname</I> <I>altes_Ziel</I> <I>vorhergehende_Version</I> <I>Paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>Pfadname</I> ist der absolute Name des alten Symlinks (der Pfad wird am Ende
|
|
der Installation ein Verzeichnis sein) und <I>altes_Ziel</I> ist der Name des
|
|
Ziels des vorherigen Symlinks unter <I>Pfadname</I>. Es kann entweder absolut
|
|
oder relativ zum Verzeichnis, das <I>Pfadname</I> enthält, sein.
|
|
<P>
|
|
|
|
Aktuelle Implementierung: das <B>preinst</B> überprüft, ob der Symlink existiert
|
|
und auf <I>altes_Ziel</I> zeigt. Falls dies nicht der Fall ist, bleibt der
|
|
Symlink existent, andernfalls wird er in <I>Pfadname</I><B>.dpkg-backup</B>
|
|
umbenannt. Bei der Konfiguration entfernt das <B>postinst</B>
|
|
<I>Pfadname</I><B>.dpkg-backup</B>, falls <I>Pfadname</I><B>.dpkg-backup</B> noch ein
|
|
Symlink ist. Falls abort-upgrade/abort-install eintritt, benennt das
|
|
<B>postrm</B> wieder <I>Pfadname</I><B>.dpkg-backup</B> in <I>Pfadname</I> zurück, falls
|
|
notwendig.
|
|
<A NAME="lbAL"> </A>
|
|
<H3>Ein Verzeichnis in einen Symlink umwandeln</H3>
|
|
|
|
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 <B>preinst</B>,
|
|
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.
|
|
<P>
|
|
|
|
Sanfte Umwandlung kann durch Einsetzen der folgenden Shell-Schnipsel in die
|
|
Betreuerskripte <B>preinst</B>, <B>postinst</B> und <B>postrm</B> implementiert werden:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper dir_to_symlink \
|
|
<BR> <I>Pfadname</I> <I>neues_Ziel</I> <I>vorhergehende_Version</I> <I>Paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>Pfadname</I> ist der absolute Name des alten Verzeichnisses (der Pfad wird am
|
|
Ende der Installation ein Symlink sein) und <I>neues_Ziel</I> ist das Ziel des
|
|
neuen Symlinks unter <I>Pfadname</I>. Es kann entweder absolut oder relativ zum
|
|
Verzeichnis, das <I>Pfadname</I> enthält, sein.
|
|
<P>
|
|
|
|
Aktuelle Implementierung: das <B>preinst</B> ü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 <I>Pfadname</I><B>.dpkg-backup</B> umbenannt und ein leeres
|
|
Vorbereitungsverzeichnis mit Namen <I>Pfadname</I> erstellt und durch eine Datei
|
|
markiert, so dass Dpkg es nachverfolgen kann. Bei der Konfiguration beendet
|
|
<B>postinst</B> die Umstellung, falls <I>Pfadname</I>.<B>.dpkg-backup</B> noch ein
|
|
Verzeichnis und <I>Pfadname</I> noch das Vorbereitungsverzeichnis ist. Es
|
|
entfernt die Markierungsdatei im Vorbereitungsverzeichnis, verschiebt die
|
|
neu erstellten Dateien im Vorbereitungsverzeichnis in das Symlink-Ziel
|
|
<I>neues_Ziel</I>/, ersetzt das jetzt leere Vorbereitungsverzeichnis
|
|
<I>Pfadnbame</I> durch einen Symlink auf <I>neues_Ziel</I> und entfernt
|
|
<I>Pfadname</I>.<B>.dpkg-backup</B>. Falls abort-upgrade/abort-install eintritt,
|
|
benennt das <B>postrm</B> wieder <I>Pfadname</I><B>.dpkg-backup</B> in <I>Pfadname</I>
|
|
zurück, falls notwendig.
|
|
<A NAME="lbAM"> </A>
|
|
<H2>INTEGRATION IN PAKETE</H2>
|
|
|
|
<P>
|
|
|
|
Bei der Benutzung der Paketierungshelfer prüfen Sie bitte, ob eine native
|
|
<B>dpkg-maintscript-helper</B>-Integration existiert. Hierdurch könnte Ihr
|
|
Aufwand verringert werden. Lesen Sie beispielsweise <B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<P>
|
|
|
|
Da <B>dpkg-maintscript-helper</B> im <B>preinst</B> verwandt wird, benötigt der
|
|
bedingungslose Einsatz eine pre-Abhängigkeit (<I>pre-dependency</I>), um
|
|
sicherzustellen, dass die Mindestversion von <B>dpkg</B> breits entpackt
|
|
wurde. Die benötigte Version hängt vom verwandten Befehl ab, für
|
|
<B>rm_conffile</B> und <B>mv_conffile</B> lautet sie 1.15.7.2, für <B>symlink_to_dir</B>
|
|
und <B>dir_to_symlink</B> lautet sie 1.17.14:
|
|
<P>
|
|
|
|
<BR> <B>Pre-Depends:</B> dpkg (>= 1.17.14)
|
|
<P>
|
|
|
|
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 <B>dpkg</B> unterstützt wird:
|
|
<P>
|
|
|
|
<BR> if dpkg-maintscript-helper supports <I>command</I>; then
|
|
<BR> dpkg-maintscript-helper <I>command</I> …
|
|
<BR> fi
|
|
<P>
|
|
|
|
Der Befehl <B>supports</B> liefert im Erfolgsfall 0, ansonsten 1 zurück. Der
|
|
Befehl <B>supports</B> ü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.
|
|
<A NAME="lbAN"> </A>
|
|
<H2>UMGEBUNG</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="4"><B>DPKG_COLORS</B><DD>
|
|
Setzt den Farbmodus (seit Dpkg 1.19.1). Die derzeit unterstützten Werte
|
|
sind: <B>auto</B> (Vorgabe), <B>always</B> und <B>never</B>.
|
|
</DL>
|
|
<A NAME="lbAO"> </A>
|
|
<H2>SIEHE AUCH</H2>
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<A NAME="lbAP"> </A>
|
|
<H2>ÜBERSETZUNG</H2>
|
|
|
|
Die deutsche Übersetzung wurde 2004, 2006-2019 von Helge Kreutzmann
|
|
<<A HREF="mailto:debian@helgefjell.de">debian@helgefjell.de</A>>, 2007 von Florian Rehnisch <<A HREF="mailto:eixman@gmx.de">eixman@gmx.de</A>> und
|
|
2008 von Sven Joachim <<A HREF="mailto:svenjoac@gmx.de">svenjoac@gmx.de</A>>
|
|
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.
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="5"><A HREF="#lbAB">BEZEICHNUNG</A><DD>
|
|
<DT id="6"><A HREF="#lbAC">ÜBERSICHT</A><DD>
|
|
<DT id="7"><A HREF="#lbAD">BEFEHLE UND PARAMETER</A><DD>
|
|
<DT id="8"><A HREF="#lbAE">BESCHREIBUNG</A><DD>
|
|
<DT id="9"><A HREF="#lbAF">GEMEINSAME PARAMETER</A><DD>
|
|
<DT id="10"><A HREF="#lbAG">CONFFILE-BEZOGENE AUFGABEN</A><DD>
|
|
<DL>
|
|
<DT id="11"><A HREF="#lbAH">Eine Conffile entfernen</A><DD>
|
|
<DT id="12"><A HREF="#lbAI">Eine Conffile umbenennen</A><DD>
|
|
</DL>
|
|
<DT id="13"><A HREF="#lbAJ">SYMLINK- UND VERZEICHNISUMWANDLUNGEN</A><DD>
|
|
<DL>
|
|
<DT id="14"><A HREF="#lbAK">Einen Symlink in ein Verzeichnis umwandeln</A><DD>
|
|
<DT id="15"><A HREF="#lbAL">Ein Verzeichnis in einen Symlink umwandeln</A><DD>
|
|
</DL>
|
|
<DT id="16"><A HREF="#lbAM">INTEGRATION IN PAKETE</A><DD>
|
|
<DT id="17"><A HREF="#lbAN">UMGEBUNG</A><DD>
|
|
<DT id="18"><A HREF="#lbAO">SIEHE AUCH</A><DD>
|
|
<DT id="19"><A HREF="#lbAP">ÜBERSETZUNG</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:04:56 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|