Commit | Line | Data |
---|---|---|
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 | |
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. |