dpkg (1.18.25) stretch; urgency=medium
[dpkg] / man / de / dpkg-maintscript-helper.man
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
27 dpkg\-maintscript\-helper \- Bekannte Einschränkungen in Dpkg in
28 Betreuerskripten 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
51 Dieses Programm wurde so entworfen, dass es in Betreuerskripten ausgeführt
52 werden kann, um einige Aufgaben zu erledigen, die \fBdpkg\fP (noch) nicht
53 selbst erledigen kann, entweder aufgrund von Design\-Entscheidungen oder
54 aufgrund aktueller Einschränkungen.
55 .P
56 Viele dieser Aufgaben benötigen koordinierte Aktionen aus mehreren
57 Betreuerskripten (\fBpreinst\fP, \fBpostinst\fP, \fBprerm\fP, \fBpostrm\fP). Um Fehler
58 zu vermeiden, wird der gleiche Aufruf einfach in alle Skripte eingefügt und
59 das Programm wird sein Verhalten automatisch abhängig von der Variable
60 \fBDPKG_MAINTSCRIPT_NAME\fP und den Argumenten im Betreuerskript, die Sie nach
61 einem doppelten Bindestrich übergeben müssen, anpassen.
62 .
63 .SH "GEMEINSAME PARAMETER"
64 .TP
65 \fIvorhergehende_Version\fP
66 Definiert die letzte Version des Pakets, dessen Upgrade die Operation
67 auslösen soll. Es ist wichtig, \fIvorhergehende_Version\fP korrekt zu
68 berechnen, so dass die Operationen korrekt ausgeführt werden, selbst falls
69 der Benutzer das Paket mit einer lokalen Version neugebaut hat. Falls
70 \fIvorhergehende_Version\fP leer ist oder weggelassen wurde wird die Operation
71 bei jedem Upgrade versucht (Hinweis: Es ist sicherer, die Version anzugeben
72 und damit die Operation nur einmal versuchen zu lassen).
73
74 Falls das Conffile in mehreren Versionen nicht ausgeliefert wurde und Sie
75 jetzt die Betreuerskripte anpassen, um die überflüssige Datei zu entfernen,
76 sollte \fIvorhergehende_Version\fP auf die Version des Pakets gesetzt werden,
77 die Sie jetzt zusammenstellen, nicht auf die erste Version des Pakets, bei
78 dem das Conffile fehlte. Dies trifft genauso auch auf alle anderen Aktionen
79 zu.
80
81 Wird beispielsweise eine Conffile in Version \fB2.0\-1\fP eines Pakets entfernt,
82 sollte \fIvorhergehende_Version\fP auf \fB2.0\-1~\fP gesetzt werden. Dies führt
83 dazu, dass das Conffile entfernt wird, selbst falls der Benutzer die
84 vorhergehende Version \fB1.0\-1\fP als \fB1.0\-1local1\fP neu gebaut hat. Oder ein
85 Paket, das einen Pfad von einem Symlink (das in Version \fB1.0\-1\fP
86 ausgeliefert wurde) zu einem Verzeichnis (ausgeliefert in Version \fB2.0\-1\fP)
87 wechselt, 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
91 Der Paketname. Wenn das Paket „Multi\-Arch: same“ ist, muss dieser Parameter
92 die Architektur\-Spezifikation enthalten, andernfalls sollte er normalerweise
93 die Architektur\-Spezifikation \fBnicht\fP enthalten (da dies Cross\-Grades
94 verhindern oder die Umstellung von architekturspezifisch auf die Architektur
95 \fBall\fP oder umgekehrt verhindern würde). Falls dieser Parameter leer oder
96 nicht angegeben ist, werden die (von \fBdpkg\fP gesetzten) Umgebungsvariablen
97 \fBDPKG_MAINTSCRIPT_PACKAGE\fP und \fBDPKG_MAINTSCRIPT_ARCH\fP verwandt, um den
98 Architektur\-spezifizierten Paketnamen zu erstellen.
99 .TP
100 \fB\-\-\fP
101 Alle Parameter der Betreuerskripte müssen nach \fB\-\-\fP an das Programm
102 weitergeleitet werden.
103 .SH "CONFFILE\-BEZOGENE AUFGABEN"
104 .P
105 Beim Upgrade eines Pakets wird \fBdpkg\fP ein Conffile (eine
106 Konfigurationsdatei, bei der \fBdpkg\fP die Änderungen des Benutzers erhalten
107 soll) nicht automatischen entfernen, falls sie nicht in der neueren Version
108 enthalten ist. Es gibt zwei Hauptgründe dafür; der erste ist, dass die
109 Conffile versehentlich entfallen sein und die nächste Version sie wieder
110 herstellen könnte und die Benutzer die Änderung nicht weggeworfen sehen
111 wollen. Der zweite besteht darin, dass Paketen erlaubt werden soll, von
112 einer Dpkg\-betreuten Conffile auf eine Datei, die von den Betreuerskripten
113 des Pakets, normalerweise mit einem Werkzeug wie Debconf oder Ucf, verwaltet
114 wird, umzustellen.
115 .P
116 Das bedeutet, falls ein Paket eine Conffile umbenennen oder entfernen soll,
117 muss es dies explizit durchführen und \fBdpkg\-maintscript\-helper\fP kann dazu
118 verwandt werden, eine sanfte Löschung und Verschiebung von Conffiles
119 innerhalb von Betreuerskripten durchzuführen.
120 .
121 .SS "Eine Conffile entfernen"
122 .P
123 Falls eine Conffile komplett entfernt wird, sollte sie von der Platte
124 entfernt werden, falls der Benutzer sie nicht verändert hat. Falls es lokale
125 Anpassungen gibt, sollten diese erhalten werden. Falls das Upgrade des
126 Pakets abgebrochen wird, sollte die neuerdings veraltete Conffile nicht
127 verschwinden.
128 .P
129 All dies wird durch Einsetzen der folgenden Shell\-Schnipsel in die
130 Betreuerskripte \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
137 Aktuelle Implementierung: im \fBpreinst\fP wird geprüft, ob die Conffile
138 geändert wurde. Dann wird sie entweder in \fIConffile\fP\fB.dpkg\-remove\fP (falls
139 sie nicht geändert wurde) oder in \fIConffile\fP\fB.dpkg\-backup\fP (falls sie
140 geändert wurde) umbenannt. Im \fBpostinst\fP wird letztere in
141 \fIConffile\fP\fB.dpkg\-bak\fP umbenannt und als Referenz behalten, da sie
142 Benutzeränderungen enthält, während erstere entfernt wird. Falls das Upgrade
143 des Pakets abgebrochen wird, reinstalliert \fBpostrm\fP die ursprüngliche
144 Conffile. Während des vollständigen Löschens wird \fBpostrm\fP auch die bisher
145 behaltene Datei \fB.dpkg\-bak\fP entfernen.
146 .
147 .SS "Eine Conffile umbenennen"
148 .P
149 Falls eine Conffile von einem Ort zu einem anderen verschoben wird, müssen
150 Sie 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
153 aufgefordert wird, die Bearbeitung der Conffile zu bestätigen, obwohl sie
154 für diese gar nicht verantwortlich sind.
155 .P
156 Sanfte Umbenennung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
157 Betreuerskripte \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
163 umzubenennenden Conffile.
164 .P
165 Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob die Conffile
166 verä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
168 das \fBpostinst\fP \fIalte_Conffile\fP\fB.dpkg\-remove\fP und bennent \fIalte_Conffile\fP
169 in \fIneue_Conffile\fP um, falls \fIalte_Conffile\fP noch existiert. Falls
170 abort\-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 .
175 Beim Upgrade eines Pakets wird \fBdpkg\fP einen Symlink nicht automatisch in
176 ein 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 .
181 Falls ein Symlink in ein echtes Verzeichnis umgewandelt wird, müssen Sie vor
182 dem Entpacken sicherstellen, dass der Symlink entfernt wird. Anfänglich
183 erscheint dies als einfache Änderung am Skript \fBpreinst\fP, allerdings wird
184 dies zu einigen Problemen führen, falls der Administrator lokale Anpassungen
185 des Symlinks durchgeführt hat oder falls ein Downgrade des Pakets auf eine
186 alte Version durchgeführt wird.
187 .P
188 Sanfte Umbenennung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
189 Betreuerskripte \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
195 der Installation ein Verzeichnis sein) und \fIaltes_Ziel\fP ist der Name des
196 Ziels des vorherigen Symlinks unter \fIPfadname\fP. Es kann entweder absolut
197 oder relativ zum Verzeichnis, das \fIPfadname\fP enthält, sein.
198 .P
199 Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob der Symlink existiert
200 und auf \fIaltes_Ziel\fP zeigt. Falls dies nicht der Fall ist, bleibt der
201 Symlink existent, andernfalls wird er in \fIPfadname\fP\fB.dpkg\-backup\fP
202 umbenannt. Bei der Konfiguration entfernt das \fBpostinst\fP
203 \fIPfadname\fP\fB.dpkg\-backup\fP, falls \fIPfadname\fP\fB.dpkg\-backup\fP noch ein
204 Symlink 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
206 notwendig.
207 .
208 .SS "Ein Verzeichnis in einen Symlink umwandeln"
209 .
210 Falls ein echtes Verzeichnis in einen Symlink umgewandelt wird, müssen Sie
211 vor dem Entpacken sicherstellen, dass das Verzeichnis entfernt
212 wird. Anfänglich erscheint dies als einfache Änderung am Skript \fBpreinst\fP,
213 allerdings wird dies zu einigen Problemen führen, falls das Verzeichnis
214 Conffiles, Pfadnamen anderer Pakete oder lokal erstellte Pfadnamen enthält
215 oder wenn ein Downgrade des Pakets durchgeführt wird.
216 .P
217 Sanfte Umwandlung kann durch Einsetzen der folgenden Shell\-Schnipsel in die
218 Betreuerskripte \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
224 Ende der Installation ein Symlink sein) und \fIneues_Ziel\fP ist das Ziel des
225 neuen Symlinks unter \fIPfadname\fP. Es kann entweder absolut oder relativ zum
226 Verzeichnis, das \fIPfadname\fP enthält, sein.
227 .P
228 Aktuelle Implementierung: das \fBpreinst\fP überprüft, ob das Verzeichnis
229 existiert, keine Conffiles, Pfadnamen anderer Pakete oder lokal erstellte
230 Pfadnamen enthält. Falls nicht, bleibt es an Ort und Stelle, andernfalls
231 wird es in \fIPfadname\fP\fB.dpkg\-backup\fP umbenannt und ein leeres
232 Vorbereitungsverzeichnis mit Namen \fIPfadname\fP erstellt und durch eine Datei
233 markiert, so dass Dpkg es nachverfolgen kann. Bei der Konfiguration beendet
234 \fBpostinst\fP die Umstellung, falls \fIPfadname\fP.\fB.dpkg\-backup\fP noch ein
235 Verzeichnis und \fIPfadname\fP noch das Vorbereitungsverzeichnis ist. Es
236 entfernt die Markierungsdatei im Vorbereitungsverzeichnis, verschiebt die
237 neu 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,
241 benennt das \fBpostrm\fP wieder \fIPfadname\fP\fB.dpkg\-backup\fP in \fIPfadname\fP
242 zurück, falls notwendig.
243 .
244 .SH "INTEGRATION IN PAKETE"
245 .P
246 Bei der Benutzung der Paketierungshelfer prüfen Sie bitte, ob eine native
247 \fBdpkg\-maintscript\-helper\fP\-Integration existiert. Hierdurch könnte Ihr
248 Aufwand verringert werden. Lesen Sie beispielsweise \fBdh_installdeb\fP(1).
249 .P
250 Da \fBdpkg\-maintscript\-helper\fP im \fBpreinst\fP verwandt wird, benötigt der
251 bedingungslose Einsatz eine pre\-Abhängigkeit (\fIpre\-dependency\fP), um
252 sicherzustellen, dass die Mindestversion von \fBdpkg\fP breits entpackt
253 wurde. 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
255 und \fBdir_to_symlink\fP lautet sie 1.17.14:
256 .P
257 \fBPre\-Depends:\fP dpkg (>= 1.17.14)
258 .P
259 In vielen Fällen sind aber die Ausführungen des Programms für das Paket
260 nicht kritisch und statt einer pre\-Abhängigkeit soll das Programm nur
261 aufgerufen werden, falls bekannt ist, dass der benötigte Befehl vom derzeit
262 installierten \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
268 Der Befehl \fBsupports\fP liefert im Erfolgsfall 0, ansonsten 1 zurück. Der
269 Befehl \fBsupports\fP überprüft, ob die durch Dpkg gesetzten und vom Skript
270 benötigten Umgebungsvariablen vorhanden sind und betrachtet es als
271 Fehlschlag, falls die Umgebung nicht ausreichend ist.
272 .SH "SIEHE AUCH"
273 .ad l
274 \fBdh_installdeb\fP(1).
275 .SH ÜBERSETZUNG
276 Die deutsche Übersetzung wurde 2004, 2006-2017 von Helge Kreutzmann
277 <debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und
278 2008 von Sven Joachim <svenjoac@gmx.de>
279 angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die
280 GNU General Public License Version 2 oder neuer für die Kopierbedingungen.
281 Es gibt KEINE HAFTUNG.