man-pages/de/man1/dpkg-maintscript-helper.1.html
2021-03-31 01:06:50 +01:00

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">&nbsp;</A>
<H2>BEZEICHNUNG</H2>
dpkg-maintscript-helper - Bekannte Einschr&auml;nkungen in Dpkg in
Betreuerskripten umgehen
<A NAME="lbAC">&nbsp;</A>
<H2>&Uuml;BERSICHT</H2>
<B>dpkg-maintscript-helper</B> <I>Befehl</I> [<I>Parameter</I> …] <B>--</B>
<I>Betr-Skript-Parameter</I>
<A NAME="lbAD">&nbsp;</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">&nbsp;</A>
<H2>BESCHREIBUNG</H2>
<P>
Dieses Programm wurde so entworfen, dass es in Betreuerskripten ausgef&uuml;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&auml;nkungen.
<P>
Viele dieser Aufgaben ben&ouml;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&uuml;gt und
das Programm wird sein Verhalten automatisch abh&auml;ngig von der Variable
<B>DPKG_MAINTSCRIPT_NAME</B> und den Argumenten im Betreuerskript, die Sie nach
einem doppelten Bindestrich &uuml;bergeben m&uuml;ssen, anpassen.
<A NAME="lbAF">&nbsp;</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&ouml;sen soll. Es ist wichtig, <I>vorhergehende_Version</I> korrekt zu
berechnen, so dass die Operationen korrekt ausgef&uuml;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 &uuml;berfl&uuml;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&uuml;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&uuml;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&ouml;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&uuml;rde). Falls dieser Parameter leer oder nicht angegeben ist, werden die
(von <B>dpkg</B> bei der Ausf&uuml;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&uuml;ssen nach <B>--</B> an das Programm
weitergeleitet werden.
</DL>
<A NAME="lbAG">&nbsp;</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 &Auml;nderungen des Benutzers erhalten
soll) nicht automatischen entfernen, falls sie nicht in der neueren Version
enthalten ist. Es gibt zwei Hauptgr&uuml;nde daf&uuml;r; der erste ist, dass die
Conffile versehentlich entfallen sein und die n&auml;chste Version sie wieder
herstellen k&ouml;nnte und die Benutzer die &Auml;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&uuml;hren und <B>dpkg-maintscript-helper</B> kann dazu
verwandt werden, eine sanfte L&ouml;schung und Verschiebung von Conffiles
innerhalb von Betreuerskripten durchzuf&uuml;hren.
<A NAME="lbAH">&nbsp;</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&auml;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>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;rm_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Conffile</I>&nbsp;<I>vorhergehende_Version</I>&nbsp;<I>Paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>Conffile</I> ist der Dateiname der zu entfernenden Conffile.
<P>
Aktuelle Implementierung: im <B>preinst</B> wird gepr&uuml;ft, ob die Conffile
ge&auml;ndert wurde. Dann wird sie entweder in <I>Conffile</I><B>.dpkg-remove</B> (falls
sie nicht ge&auml;ndert wurde) oder in <I>Conffile</I><B>.dpkg-backup</B> (falls sie
ge&auml;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&auml;nderungen enth&auml;lt, w&auml;hrend erstere entfernt wird. Falls das Upgrade
des Pakets abgebrochen wird, reinstalliert <B>postrm</B> die urspr&uuml;ngliche
Conffile. W&auml;hrend des vollst&auml;ndigen L&ouml;schens wird <B>postrm</B> auch die bisher
behaltene Datei <B>.dpkg-bak</B> entfernen.
<A NAME="lbAI">&nbsp;</A>
<H3>Eine Conffile umbenennen</H3>
<P>
Falls eine Conffile von einem Ort zu einem anderen verschoben wird, m&uuml;ssen
Sie sicherstellen, dass Sie auch alle &Auml;nderungen des Benutzers mit
&uuml;bernehmen. Anf&auml;nglich erscheint dies als einfache &Auml;nderung am Skript
<B>preinst</B>, allerdings wird dies dazu f&uuml;hren, dass der Benutzer von <B>dpkg</B>
aufgefordert wird, die Bearbeitung der Conffile zu best&auml;tigen, obwohl sie
f&uuml;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>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;mv_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>alte_Conffile</I>&nbsp;<I>neue_Conffile</I>&nbsp;<I>vorhergehende_Version</I>&nbsp;<I>Paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<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> &uuml;berpr&uuml;ft, ob die Conffile
ver&auml;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&uuml;ck, falls notwendig.
<A NAME="lbAJ">&nbsp;</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 &auml;lterer Versionen
(&raquo;downgrades&laquo;) werden nicht unterst&uuml;tzt und der Pfad verbleibt wie er ist.
<A NAME="lbAK">&nbsp;</A>
<H3>Einen Symlink in ein Verzeichnis umwandeln</H3>
Falls ein Symlink in ein echtes Verzeichnis umgewandelt wird, m&uuml;ssen Sie vor
dem Entpacken sicherstellen, dass der Symlink entfernt wird. Anf&auml;nglich
erscheint dies als einfache &Auml;nderung am Skript <B>preinst</B>, allerdings wird
dies zu einigen Problemen f&uuml;hren, falls der Administrator lokale Anpassungen
des Symlinks durchgef&uuml;hrt hat oder falls ein Downgrade des Pakets auf eine
alte Version durchgef&uuml;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>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;symlink_to_dir&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Pfadname</I>&nbsp;<I>altes_Ziel</I>&nbsp;<I>vorhergehende_Version</I>&nbsp;<I>Paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<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&auml;lt, sein.
<P>
Aktuelle Implementierung: das <B>preinst</B> &uuml;berpr&uuml;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&uuml;ck, falls
notwendig.
<A NAME="lbAL">&nbsp;</A>
<H3>Ein Verzeichnis in einen Symlink umwandeln</H3>
Falls ein echtes Verzeichnis in einen Symlink umgewandelt wird, m&uuml;ssen Sie
vor dem Entpacken sicherstellen, dass das Verzeichnis entfernt
wird. Anf&auml;nglich erscheint dies als einfache &Auml;nderung am Skript <B>preinst</B>,
allerdings wird dies zu einigen Problemen f&uuml;hren, falls das Verzeichnis
Conffiles, Pfadnamen anderer Pakete oder lokal erstellte Pfadnamen enth&auml;lt
oder wenn ein Downgrade des Pakets durchgef&uuml;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>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;dir_to_symlink&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Pfadname</I>&nbsp;<I>neues_Ziel</I>&nbsp;<I>vorhergehende_Version</I>&nbsp;<I>Paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<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&auml;lt, sein.
<P>
Aktuelle Implementierung: das <B>preinst</B> &uuml;berpr&uuml;ft, ob das Verzeichnis
existiert, keine Conffiles, Pfadnamen anderer Pakete oder lokal erstellte
Pfadnamen enth&auml;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&uuml;ck, falls notwendig.
<A NAME="lbAM">&nbsp;</A>
<H2>INTEGRATION IN PAKETE</H2>
<P>
Bei der Benutzung der Paketierungshelfer pr&uuml;fen Sie bitte, ob eine native
<B>dpkg-maintscript-helper</B>-Integration existiert. Hierdurch k&ouml;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&ouml;tigt der
bedingungslose Einsatz eine pre-Abh&auml;ngigkeit (<I>pre-dependency</I>), um
sicherzustellen, dass die Mindestversion von <B>dpkg</B> breits entpackt
wurde. Die ben&ouml;tigte Version h&auml;ngt vom verwandten Befehl ab, f&uuml;r
<B>rm_conffile</B> und <B>mv_conffile</B> lautet sie 1.15.7.2, f&uuml;r <B>symlink_to_dir</B>
und <B>dir_to_symlink</B> lautet sie 1.17.14:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;<B>Pre-Depends:</B>&nbsp;dpkg&nbsp;(&gt;=&nbsp;1.17.14)
<P>
In vielen F&auml;llen sind aber die Ausf&uuml;hrungen des Programms f&uuml;r das Paket
nicht kritisch und statt einer pre-Abh&auml;ngigkeit soll das Programm nur
aufgerufen werden, falls bekannt ist, dass der ben&ouml;tigte Befehl vom derzeit
installierten <B>dpkg</B> unterst&uuml;tzt wird:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;dpkg-maintscript-helper&nbsp;supports&nbsp;<I>command</I>;&nbsp;then
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;<I>command</I>&nbsp;
<BR>&nbsp;&nbsp;&nbsp;&nbsp;fi
<P>
Der Befehl <B>supports</B> liefert im Erfolgsfall 0, ansonsten 1 zur&uuml;ck. Der
Befehl <B>supports</B> &uuml;berpr&uuml;ft, ob die durch Dpkg gesetzten und vom Skript
ben&ouml;tigten Umgebungsvariablen vorhanden sind und betrachtet es als
Fehlschlag, falls die Umgebung nicht ausreichend ist.
<A NAME="lbAN">&nbsp;</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&uuml;tzten Werte
sind: <B>auto</B> (Vorgabe), <B>always</B> und <B>never</B>.
</DL>
<A NAME="lbAO">&nbsp;</A>
<H2>SIEHE AUCH</H2>
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
<A NAME="lbAP">&nbsp;</A>
<H2>&Uuml;BERSETZUNG</H2>
Die deutsche &Uuml;bersetzung wurde 2004, 2006-2019 von Helge Kreutzmann
&lt;<A HREF="mailto:debian@helgefjell.de">debian@helgefjell.de</A>&gt;, 2007 von Florian Rehnisch &lt;<A HREF="mailto:eixman@gmx.de">eixman@gmx.de</A>&gt; und
2008 von Sven Joachim &lt;<A HREF="mailto:svenjoac@gmx.de">svenjoac@gmx.de</A>&gt;
angefertigt. Diese &Uuml;bersetzung ist Freie Dokumentation; lesen Sie die
GNU General Public License Version 2 oder neuer f&uuml;r die Kopierbedingungen.
Es gibt KEINE HAFTUNG.
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="5"><A HREF="#lbAB">BEZEICHNUNG</A><DD>
<DT id="6"><A HREF="#lbAC">&Uuml;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">&Uuml;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>