dpkg (1.18.25) stretch; urgency=medium
[dpkg] / man / de / dpkg-maintscript-helper.man
CommitLineData
1479465f
GJ
1.\" dpkg manual page - dpkg-maintscript-helper(1)
2.\"
3.\" Copyright © 2010-2012 Raphaël Hertzog <hertzog@debian.org>
4.\" Copyright © 2011-2015 Guillem Jover <guillem@debian.org>
5.\"
6.\" This is free software; you can redistribute it and/or modify
7.\" it under the terms of the GNU General Public License as published by
8.\" the Free Software Foundation; either version 2 of the License, or
9.\" (at your option) any later version.
10.\"
11.\" This is distributed in the hope that it will be useful,
12.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
13.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14.\" GNU General Public License for more details.
15.\"
16.\" You should have received a copy of the GNU General Public License
17.\" along with this program. If not, see <https://www.gnu.org/licenses/>.
18.
19.\"*******************************************************************
20.\"
21.\" This file was generated with po4a. Translate the source file.
22.\"
23.\"*******************************************************************
24.TH dpkg\-maintscript\-helper 1 %RELEASE_DATE% %VERSION% dpkg\-Programmsammlung
25.nh
26.SH BEZEICHNUNG
27dpkg\-maintscript\-helper \- Bekannte Einschränkungen in Dpkg in
28Betreuerskripten umgehen
29.
30.SH ÜBERSICHT
31\fBdpkg\-maintscript\-helper\fP \fIBefehl\fP [\fIParameter\fP …] \fB\-\-\fP
32\fIBetr\-Skript\-Parameter\fP …
33.
34.SH "BEFEHLE UND PARAMETER"
35.P
36\fBsupports\fP \fIBefehl\fP
37.P
38\fBrm_conffile\fP \fIConffile\fP [\fIvorhergehende_Version\fP [\fIPaket\fP]]
39.P
40\fBmv_conffile\fP \fIalte_Conffile\fP \fIneue_Conffile\fP [\fIvorhergehende_Version\fP
41[\fIPaket\fP]]
42.P
43\fBsymlink_to_dir\fP \fIPfadname\fP \fIaltes_Ziel\fP [\fIvorhergehende_Version\fP
44[\fIPaket\fP]]
45.P
46\fBdir_to_symlink\fP \fIPfadname\fP \fIneues_Ziel\fP [\fIvorhergehende_Version\fP
47[\fIPaket\fP]]
48.
49.SH BESCHREIBUNG
50.P
51Dieses Programm wurde so entworfen, dass es in Betreuerskripten ausgeführt
52werden kann, um einige Aufgaben zu erledigen, die \fBdpkg\fP (noch) nicht
53selbst erledigen kann, entweder aufgrund von Design\-Entscheidungen oder
54aufgrund aktueller Einschränkungen.
55.P
56Viele dieser Aufgaben benötigen koordinierte Aktionen aus mehreren
57Betreuerskripten (\fBpreinst\fP, \fBpostinst\fP, \fBprerm\fP, \fBpostrm\fP). Um Fehler
58zu vermeiden, wird der gleiche Aufruf einfach in alle Skripte eingefügt und
59das Programm wird sein Verhalten automatisch abhängig von der Variable
60\fBDPKG_MAINTSCRIPT_NAME\fP und den Argumenten im Betreuerskript, die Sie nach
61einem doppelten Bindestrich übergeben müssen, anpassen.
62.
63.SH "GEMEINSAME PARAMETER"
64.TP
65\fIvorhergehende_Version\fP
66Definiert die letzte Version des Pakets, dessen Upgrade die Operation
67auslösen soll. Es ist wichtig, \fIvorhergehende_Version\fP korrekt zu
68berechnen, so dass die Operationen korrekt ausgeführt werden, selbst falls
69der Benutzer das Paket mit einer lokalen Version neugebaut hat. Falls
70\fIvorhergehende_Version\fP leer ist oder weggelassen wurde wird die Operation
71bei jedem Upgrade versucht (Hinweis: Es ist sicherer, die Version anzugeben
72und damit die Operation nur einmal versuchen zu lassen).
73
74Falls das Conffile in mehreren Versionen nicht ausgeliefert wurde und Sie
75jetzt die Betreuerskripte anpassen, um die überflüssige Datei zu entfernen,
76sollte \fIvorhergehende_Version\fP auf die Version des Pakets gesetzt werden,
77die Sie jetzt zusammenstellen, nicht auf die erste Version des Pakets, bei
78dem das Conffile fehlte. Dies trifft genauso auch auf alle anderen Aktionen
79zu.
80
81Wird beispielsweise eine Conffile in Version \fB2.0\-1\fP eines Pakets entfernt,
82sollte \fIvorhergehende_Version\fP auf \fB2.0\-1~\fP gesetzt werden. Dies führt
83dazu, dass das Conffile entfernt wird, selbst falls der Benutzer die
84vorhergehende Version \fB1.0\-1\fP als \fB1.0\-1local1\fP neu gebaut hat. Oder ein
85Paket, das einen Pfad von einem Symlink (das in Version \fB1.0\-1\fP
86ausgeliefert wurde) zu einem Verzeichnis (ausgeliefert in Version \fB2.0\-1\fP)
87wechselt, aber die eigentliche Umstellung in den Betreuerskripten in Version
88\fB3.0\-1\fP durchführt, sollte \fIvorhergehende_Version\fP auf \fB3.0\-1~\fP setzen.
89.TP
90\fIPaket\fP
91Der Paketname. Wenn das Paket „Multi\-Arch: same“ ist, muss dieser Parameter
92die Architektur\-Spezifikation enthalten, andernfalls sollte er normalerweise
93die Architektur\-Spezifikation \fBnicht\fP enthalten (da dies Cross\-Grades
94verhindern oder die Umstellung von architekturspezifisch auf die Architektur
95\fBall\fP oder umgekehrt verhindern würde). Falls dieser Parameter leer oder
96nicht angegeben ist, werden die (von \fBdpkg\fP gesetzten) Umgebungsvariablen
97\fBDPKG_MAINTSCRIPT_PACKAGE\fP und \fBDPKG_MAINTSCRIPT_ARCH\fP verwandt, um den
98Architektur\-spezifizierten Paketnamen zu erstellen.
99.TP
100\fB\-\-\fP
101Alle Parameter der Betreuerskripte müssen nach \fB\-\-\fP an das Programm
102weitergeleitet werden.
103.SH "CONFFILE\-BEZOGENE AUFGABEN"
104.P
105Beim Upgrade eines Pakets wird \fBdpkg\fP ein Conffile (eine
106Konfigurationsdatei, bei der \fBdpkg\fP die Änderungen des Benutzers erhalten
107soll) nicht automatischen entfernen, falls sie nicht in der neueren Version
108enthalten ist. Es gibt zwei Hauptgründe dafür; der erste ist, dass die
109Conffile versehentlich entfallen sein und die nächste Version sie wieder
110herstellen könnte und die Benutzer die Änderung nicht weggeworfen sehen
111wollen. Der zweite besteht darin, dass Paketen erlaubt werden soll, von
112einer Dpkg\-betreuten Conffile auf eine Datei, die von den Betreuerskripten
113des Pakets, normalerweise mit einem Werkzeug wie Debconf oder Ucf, verwaltet
114wird, umzustellen.
115.P
116Das bedeutet, falls ein Paket eine Conffile umbenennen oder entfernen soll,
117muss es dies explizit durchführen und \fBdpkg\-maintscript\-helper\fP kann dazu
118verwandt werden, eine sanfte Löschung und Verschiebung von Conffiles
119innerhalb von Betreuerskripten durchzuführen.
120.
121.SS "Eine Conffile entfernen"
122.P
123Falls eine Conffile komplett entfernt wird, sollte sie von der Platte
124entfernt werden, falls der Benutzer sie nicht verändert hat. Falls es lokale
125Anpassungen gibt, sollten diese erhalten werden. Falls das Upgrade des
126Pakets abgebrochen wird, sollte die neuerdings veraltete Conffile nicht
127verschwinden.
128.P
129All dies wird durch Einsetzen der folgenden Shell\-Schnipsel in die
130Betreuerskripte \fBpreinst\fP, \fBpostinst\fP und \fBpostrm\fP implementiert:
131.P
132 dpkg\-maintscript\-helper rm_conffile \e
133 \fIConffile\fP \fIvorhergehende_Version\fP \fIPaket\fP \-\- "$@"
134.P
135\fIConffile\fP ist der Dateiname der zu entfernenden Conffile.
136.P
137Aktuelle Implementierung: im \fBpreinst\fP wird geprüft, ob die Conffile
138geändert wurde. Dann wird sie entweder in \fIConffile\fP\fB.dpkg\-remove\fP (falls
139sie nicht geändert wurde) oder in \fIConffile\fP\fB.dpkg\-backup\fP (falls sie
140geändert wurde) umbenannt. Im \fBpostinst\fP wird letztere in
141\fIConffile\fP\fB.dpkg\-bak\fP umbenannt und als Referenz behalten, da sie
142Benutzeränderungen enthält, während erstere entfernt wird. Falls das Upgrade
143des Pakets abgebrochen wird, reinstalliert \fBpostrm\fP die ursprüngliche
144Conffile. Während des vollständigen Löschens wird \fBpostrm\fP auch die bisher
145behaltene Datei \fB.dpkg\-bak\fP entfernen.
146.
147.SS "Eine Conffile umbenennen"
148.P
149Falls eine Conffile von einem Ort zu einem anderen verschoben wird, müssen
150Sie sicherstellen, dass Sie auch alle Änderungen des Benutzers mit
151übernehmen. Anfänglich erscheint dies als einfache Änderung am Skript
152\fBpreinst\fP, allerdings wird dies dazu führen, dass der Benutzer von \fBdpkg\fP
153aufgefordert wird, die Bearbeitung der Conffile zu bestätigen, obwohl sie
154für diese gar nicht verantwortlich sind.
155.P
156Sanfte Umbenennung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
157Betreuerskripte \fBpreinst\fP, \fBpostinst\fP und \fBpostrm\fP implementiert werden:
158.P
159 dpkg\-maintscript\-helper mv_conffile \e
160 \fIalte_Conffile\fP \fIneue_Conffile\fP \fIvorhergehende_Version\fP \fIPaket\fP \-\- "$@"
161.P
162\fIalte_Conffile\fP und \fIneue_Conffile\fP sind der alte und der neue Name der
163umzubenennenden Conffile.
164.P
165Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob die Conffile
166verändert wurde, falls ja, verbleibt sie am Platz, andernfalls wird sie in
167\fIalte_Conffile\fP\fB.dpkg\-remove\fP umbenannt. Bei der Konfiguration entfernt
168das \fBpostinst\fP \fIalte_Conffile\fP\fB.dpkg\-remove\fP und bennent \fIalte_Conffile\fP
169in \fIneue_Conffile\fP um, falls \fIalte_Conffile\fP noch existiert. Falls
170abort\-upgrade/abort\-install eintritt, benennt das \fBpostrm\fP wieder
171\fIalte_Conffile\fP\fB.dpkg\-remove\fP in \fIalte_Conffile\fP zurück, falls notwendig.
172.
173.SH "SYMLINK\- UND VERZEICHNISUMWANDLUNGEN"
174.
175Beim Upgrade eines Pakets wird \fBdpkg\fP einen Symlink nicht automatisch in
176ein Verzeichnis und umgekehrt umwandeln. Installationen älterer Versionen
177(»downgrades«) werden nicht unterstützt und der Pfad verbleibt wie er ist.
178.
179.SS "Einen Symlink in ein Verzeichnis umwandeln"
180.
181Falls ein Symlink in ein echtes Verzeichnis umgewandelt wird, müssen Sie vor
182dem Entpacken sicherstellen, dass der Symlink entfernt wird. Anfänglich
183erscheint dies als einfache Änderung am Skript \fBpreinst\fP, allerdings wird
184dies zu einigen Problemen führen, falls der Administrator lokale Anpassungen
185des Symlinks durchgeführt hat oder falls ein Downgrade des Pakets auf eine
186alte Version durchgeführt wird.
187.P
188Sanfte Umbenennung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
189Betreuerskripte \fBpreinst\fP, \fBpostinst\fP und \fBpostrm\fP implementiert werden:
190.P
191 dpkg\-maintscript\-helper symlink_to_dir \e
192 \fIPfadname\fP \fIaltes_Ziel\fP \fIvorhergehende_Version\fP \fIPaket\fP \-\- "$@"
193.P
194\fIPfadname\fP ist der absolute Name des alten Symlinks (der Pfad wird am Ende
195der Installation ein Verzeichnis sein) und \fIaltes_Ziel\fP ist der Name des
196Ziels des vorherigen Symlinks unter \fIPfadname\fP. Es kann entweder absolut
197oder relativ zum Verzeichnis, das \fIPfadname\fP enthält, sein.
198.P
199Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob der Symlink existiert
200und auf \fIaltes_Ziel\fP zeigt. Falls dies nicht der Fall ist, bleibt der
201Symlink existent, andernfalls wird er in \fIPfadname\fP\fB.dpkg\-backup\fP
202umbenannt. Bei der Konfiguration entfernt das \fBpostinst\fP
203\fIPfadname\fP\fB.dpkg\-backup\fP, falls \fIPfadname\fP\fB.dpkg\-backup\fP noch ein
204Symlink ist. Falls abort\-upgrade/abort\-install eintritt, benennt das
205\fBpostrm\fP wieder \fIPfadname\fP\fB.dpkg\-backup\fP in \fIPfadname\fP zurück, falls
206notwendig.
207.
208.SS "Ein Verzeichnis in einen Symlink umwandeln"
209.
210Falls ein echtes Verzeichnis in einen Symlink umgewandelt wird, müssen Sie
211vor dem Entpacken sicherstellen, dass das Verzeichnis entfernt
212wird. Anfänglich erscheint dies als einfache Änderung am Skript \fBpreinst\fP,
213allerdings wird dies zu einigen Problemen führen, falls das Verzeichnis
214Conffiles, Pfadnamen anderer Pakete oder lokal erstellte Pfadnamen enthält
215oder wenn ein Downgrade des Pakets durchgeführt wird.
216.P
217Sanfte Umwandlung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
218Betreuerskripte \fBpreinst\fP, \fBpostinst\fP und \fBpostrm\fP implementiert werden:
219.P
220 dpkg\-maintscript\-helper dir_to_symlink \e
221 \fIPfadname\fP \fIneues_Ziel\fP \fIvorhergehende_Version\fP \fIPaket\fP \-\- "$@"
222.P
223\fIPfadname\fP ist der absolute Name des alten Verzeichnisses (der Pfad wird am
224Ende der Installation ein Symlink sein) und \fIneues_Ziel\fP ist das Ziel des
225neuen Symlinks unter \fIPfadname\fP. Es kann entweder absolut oder relativ zum
226Verzeichnis, das \fIPfadname\fP enthält, sein.
227.P
228Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob das Verzeichnis
229existiert, keine Conffiles, Pfadnamen anderer Pakete oder lokal erstellte
230Pfadnamen enthält. Falls nicht, bleibt es an Ort und Stelle, andernfalls
231wird es in \fIPfadname\fP\fB.dpkg\-backup\fP umbenannt und ein leeres
232Vorbereitungsverzeichnis mit Namen \fIPfadname\fP erstellt und durch eine Datei
233markiert, so dass Dpkg es nachverfolgen kann. Bei der Konfiguration beendet
234\fBpostinst\fP die Umstellung, falls \fIPfadname\fP.\fB.dpkg\-backup\fP noch ein
235Verzeichnis und \fIPfadname\fP noch das Vorbereitungsverzeichnis ist. Es
236entfernt die Markierungsdatei im Vorbereitungsverzeichnis, verschiebt die
237neu erstellten Dateien im Vorbereitungsverzeichnis in das Symlink\-Ziel
238\fIneues_Ziel\fP/, ersetzt das jetzt leere Vorbereitungsverzeichnis
239\fIPfadnbame\fP durch einen Symlink auf \fIneues_Ziel\fP und entfernt
240\fIPfadname\fP.\fB.dpkg\-backup\fP. Falls abort\-upgrade/abort\-install eintritt,
241benennt das \fBpostrm\fP wieder \fIPfadname\fP\fB.dpkg\-backup\fP in \fIPfadname\fP
242zurück, falls notwendig.
243.
244.SH "INTEGRATION IN PAKETE"
245.P
246Bei der Benutzung der Paketierungshelfer prüfen Sie bitte, ob eine native
247\fBdpkg\-maintscript\-helper\fP\-Integration existiert. Hierdurch könnte Ihr
248Aufwand verringert werden. Lesen Sie beispielsweise \fBdh_installdeb\fP(1).
249.P
250Da \fBdpkg\-maintscript\-helper\fP im \fBpreinst\fP verwandt wird, benötigt der
251bedingungslose Einsatz eine pre\-Abhängigkeit (\fIpre\-dependency\fP), um
252sicherzustellen, dass die Mindestversion von \fBdpkg\fP breits entpackt
253wurde. Die benötigte Version hängt vom verwandten Befehl ab, für
254\fBrm_conffile\fP und \fBmv_conffile\fP lautet sie 1.15.7.2, für \fBsymlink_to_dir\fP
255und \fBdir_to_symlink\fP lautet sie 1.17.14:
256.P
257 \fBPre\-Depends:\fP dpkg (>= 1.17.14)
258.P
259In vielen Fällen sind aber die Ausführungen des Programms für das Paket
260nicht kritisch und statt einer pre\-Abhängigkeit soll das Programm nur
261aufgerufen werden, falls bekannt ist, dass der benötigte Befehl vom derzeit
262installierten \fBdpkg\fP unterstützt wird:
263.P
264 if dpkg\-maintscript\-helper supports \fIcommand\fP; then
265 dpkg\-maintscript\-helper \fIcommand\fP …
266 fi
267.P
268Der Befehl \fBsupports\fP liefert im Erfolgsfall 0, ansonsten 1 zurück. Der
269Befehl \fBsupports\fP überprüft, ob die durch Dpkg gesetzten und vom Skript
270benötigten Umgebungsvariablen vorhanden sind und betrachtet es als
271Fehlschlag, falls die Umgebung nicht ausreichend ist.
272.SH "SIEHE AUCH"
273.ad l
274\fBdh_installdeb\fP(1).
275.SH ÜBERSETZUNG
276Die deutsche Übersetzung wurde 2004, 2006-2017 von Helge Kreutzmann
277<debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und
2782008 von Sven Joachim <svenjoac@gmx.de>
279angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die
280GNU General Public License Version 2 oder neuer für die Kopierbedingungen.
281Es gibt KEINE HAFTUNG.