1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
.\" dpkg manual page - dpkg-maintscript-helper(1)
.\"
.\" Copyright © 2010-2012 Raphaël Hertzog <hertzog@debian.org>
.\" Copyright © 2011-2015 Guillem Jover <guillem@debian.org>
.\"
.\" This is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see <https://www.gnu.org/licenses/>.
.
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH dpkg\-maintscript\-helper 1 %RELEASE_DATE% %VERSION% dpkg\-suite
.nh
.SH NAAM
dpkg\-maintscript\-helper \- omzeilt in de scripts van de onderhouder gekende
beperkingen van dpkg
.
.SH OVERZICHT
\fBdpkg\-maintscript\-helper\fP \fIcommando\fP [\fIparameter\fP...] \fB\-\-\fP
\fIonderhouderscriptparameter\fP...
.
.SH "COMMANDO'S EN PARAMETERS"
.P
\fBsupports\fP \fIcommando\fP
.P
\fBrm_conffile\fP \fIconfiguratiebestand\fP [\fIvorige\-versie\fP [\fIpakket\fP]]
.P
\fBmv_conffile\fP \fIoud\-configuratiebestand\fP \fInieuw\-configuratiebestand\fP
[\fIvorige\-versie\fP [\fIpakket\fP]]
.P
\fBsymlink_to_dir\fP \fIpadnaam\fP \fIoud\-doel\fP [\fIvorige\-versie\fP [\fIpakket\fP]]
.P
\fBdir_to_symlink\fP \fIpadnaam\fP \fInieuw\-doel\fP [\fIvorige\-versie\fP [\fIpakket\fP]]
.
.SH BESCHRIJVING
.P
Dit programma is ontwikkeld om uitgevoerd te worden binnenin
onderhouderscripts om sommige taken te verrichten die \fBdpkg\fP (nog) niet
alleen kan uitvoeren, ofwel omwille van gemaakte keuzes inzake design ofwel
ten gevolge van actuele beperkingen.
.P
Veel van deze taken vereisen gecoördineerde actie van verschillende
onderhouderscripts (\fBpreinst\fP, \fBpostinst\fP, \fBprerm\fP, \fBpostrm\fP). Om fouten
te vermijden moet gewoon dezelfde aanroep in alle scripts geplaatst worden
en het programma zal zijn gedrag automatisch aan passen op basis van de
omgevingsvariabele \fBDPKG_MAINTSCRIPT_NAME\fP en de argumenten van de
onderhouderscripts die na een dubbel koppelteken opgegeven moeten worden.
.
.SH "GEMEENSCHAPPELIJKE PARAMETERS"
.TP
\fIvorige\-versie\fP
Definieert de laatste versie van het pakket waarvan de opwaardering de
operatie moet uitlokken. Het is belangrijk om \fIvorige\-versie\fP correct te
berekenen, zodat de operaties correct uitgevoerd worden zelfs in het geval
de gebruiker het pakket met een lokaal versienummer herbouwde. Indien
\fIvorige\-versie\fP leeg of weggelaten is, dan wordt geprobeerd om bij elke
opwaardering de operatie uit te voeren (merk op dat het veiliger is om de
versie op te geven zodat slechts eenmaal geprobeerd wordt om de operatie uit
te voeren).
Indien sinds verschillende versies geen configuratiebestand meer meegeleverd
werd en u nu de scripts van de pakketonderhouder aan het wijzigen bent om
het verouderde bestand op te ruimen, moet \fIvorige\-versie\fP ingesteld worden
op de versie van het pakket dat u nu aan het voorbereiden bent, niet op de
eerste versie van het pakket zonder het configuratiebestand. Dit geldt op
dezelfde wijze voor alle andere acties.
Voor een configuratiebestand dat in de versie \fB2.0\-1\fP van een pakket
verwijderd werd, moet \fIvorige\-versie\fP ingesteld worden op \fB2.0\-1~\fP. Dit
heeft tot effect dat het configuratiebestand verwijderd wordt, zelfs als de
gebruiker de vorige versie \fB1.0\-1\fP herbouwde als \fB1.0\-1lokaal1\fP. En in het
geval waarin in een pakket een pad eerst een symbolische koppeling was (bij
versie \fB1.0\-1\fP) en later een map werd (bij versie \fB2.0\-1\fP), maar u pas in
versie \fB3.0\-1\fP de eigenlijke omschakeling doorvoert in de scripts van de
pakketonderhouder, moet \fIvorige\-versie\fP ingesteld worden op \fB3.0\-1~\fP.
.TP
\fIpakket\fP
De pakketnaam met die padnaam/namen. Als het pakket “Multi\-Arch: same” is,
moet deze parameter de architectuurkwalificatie bevatten, anders zou er
gewoonlijk \fBgeen\fP architectuurkwalificatie in moeten voorkomen (aangezien
dit geen cross\-grades zou toelaten, of de omschakeling van
architectuurspecifiek naar architectuur \fBall\fP en vice versa). Indien de
parameter leeg is of weggelaten werd, zullen de omgevingsvariabelen
\fBDPKG_MAINTSCRIPT_PACKAGE\fP en \fBDPKG_MAINTSCRIPT_ARCH\fP (zoals die door
\fBdpkg\fP ingesteld werden bij het uitvoeren van de scripts van de
onderhouder) gebruikt worden om een pakketnaam met architectuurkwalificatie
te genereren.
.TP
\fB\-\-\fP
Alle parameters van de scripts van de pakketonderhouder moeten doorgegeven
worden aan het programma na \fB\-\-\fP.
.SH "TAKEN IN VERBAND MET CONFIGURATIEBESTANDEN"
.P
Bij het opwaarderen van een pakket zal \fBdpkg\fP niet automatisch een conffile
(configuratiebestand) (conffile = een configuratiebestand waarin \fBdpkg\fP
door de gebruiker gemaakte aanpassingen moet behouden) verwijderen indien
dat niet in de nieuwe versie voorkomt. Daarvoor zijn twee belangrijke
redenen. De eerste is dat het configuratiebestand per ongeluk weggevallen
kan zijn en dat de volgende versie dit zou kunnen herstellen en dat
gebruikers hun aanpassingen niet graag verloren zouden zien gaan. De tweede
is om pakketten de mogelijkheid te bieden om over te gaan van een door dpkg
onderhouden configuratiebestand naar een bestand dat onderhouden wordt door
de scripts van de pakketonderhouder, meestal met behulp van gereedschap
zoals debconf of ucf.
.P
Dit houdt in dat indien een pakket de bedoeling heeft om een conffile
(configuratiebestand) te hernoemen of te verwijderen, het dit expliciet moet
doen en dat \fBdpkg\-maintscript\-helper\fP kan gebruikt worden in scripts van de
pakketonderhouder om het verwijderen en verplaatsen van conffiles op een
elegante manier uit te voeren.
.
.SS "Een configuratiebestand verwijderen"
.P
Indien een configuratiebestand volledig verwijderd wordt, moet het van
schijf verwijderd worden, tenzij de gebruiker het aangepast heeft. Indien er
lokale aanpassingen aangebracht werden, moeten die behouden blijven. Indien
het opwaarderen van het pakket afbreekt, mag het pas in onbruik geraakte
configuratiebestand niet verdwijnen.
.P
Dit alles wordt toegepast door het volgende shell\-fragment te plaatsen in de
scripts \fBpreinst\fP, \fBpostinst\fP en \fBpostrm\fP van de pakketonderhouder:
.P
dpkg\-maintscript\-helper rm_conffile \e
\fIconfiguratiebestand\fP \fIvorige\-versie\fP \fIpakket\fP \-\- "$@"
.P
\fIconfiguratiebestand\fP is de bestandsnaam van het te verwijderen
configuratiebestand.
.P
Huidige toepassing: in het script \fBpreinst\fP controleert het of het
configuratiebestand gewijzigd werd en hernoemt het ofwel naar
\fIconfiguratiebestand\fP\fB.dpkg\-remove\fP (als het niet gewijzigd was) of naar
\fIconfiguratiebestand\fP\fB.dpkg\-backup\fP (als het wel gewijzigd was). In het
script \fBpostinst\fP wordt dit laatste bestand hernoemd naar
\fIconfiguratiebestand\fP\fB.dpkg\-bak\fP en het wordt ter referentie behouden
vermits het door de gebruiker gemaakte aanpassingen bevat. In het eerste
geval (niet gewijzigd configuratiebestand) wordt het bestand
verwijderd. Indien de opwaardering van het pakket afbreekt, herinstalleert
het script \fBpostrm\fP het originele configuratiebestand. Tijdens het
uitvoeren van een wisopdracht (purge) zal het script \fBpostrm\fP ook het tot
dan bewaarde bestand \fB.dpkg\-bak\fP verwijderen.
.
.SS "Een configuratiebestand hernoemen"
.P
Indien een configuratiebestand verplaatst wordt van de ene locatie naar een
andere, moet u er voor zorgen dat eventuele wijzigingen die de gebruiker
maakte mee gaan. Op het eerste gezicht kan dit lijken op een eenvoudige
aanpassing aan het script \fBpreinst\fP. Dat zal evenwel als resultaat hebben
dat de gebruiker door \fBdpkg\fP gevraagd wordt om de aanpassingen aan het
configuratiebestand goed te keuren, al heeft hij er in dit geval niets mee
te maken.
.P
Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende
shell\-fragment te plaatsen in de scripts \fBpreinst\fP, \fBpostinst\fP en
\fBpostrm\fP van de pakketonderhouder:
.P
dpkg\-maintscript\-helper mv_conffile \e
\fIoud\-configuratiebestand\fP \fInieuw\-configuratiebestand\fP \fIvorige\-versie\fP \fIpakket\fP \-\- "$@"
.P
\fIoud\-configuratiebestand\fP en \fInieuw\-configuratiebestand\fP zijn de oude en
de nieuwe naam van het configuratiebestand dat hernoemd moet worden.
.P
Huidige toepassing: het script \fBpreinst\fP controleert of het
configuratiebestand gewijzigd werd. Indien dat het geval is wordt het
gelaten waar het is, anders wordt het hernoemd naar
\fIoud\-configuratiebestand\fP\fB.dpkg\-remove\fP. Bij het configureren verwijdert
het script \fBpostinst\fP \fIoud\-configuratiebestand\fP\fB.dpkg\-remove\fP en hernoemt
\fIoud\-configuratiebestand\fP naar \fInieuw\-configuratiebestand\fP als
\fIoud\-configuratiebestand\fP nog steeds voorhanden is. Bij
abort\-upgrade/abort\-install (afbreken van de opwaardering/installatie)
hernoemt het script \fBpostrm\fP zo nodig
\fIoud\-configuratiebestand\fP\fB.dpkg\-remove\fP terug naar
\fIoud\-configuratiebestand\fP.
.
.SH "OMSCHAKELEN TUSSEN SYMBOLISCHE KOPPELING EN MAP"
.
Bij het opwaarderen van een pakket zal \fBdpkg\fP niet automatisch een
symbolische koppeling omzetten naar een map of vice versa. Degradaties
worden niet ondersteund en het pad wordt onveranderd gelaten.
.
.SS "Een symbolische koppeling omzetten naar een map"
.
Indien een symbolische koppeling veranderd wordt naar een echte map, moet u
er voor zorgen dat de symbolische koppeling verwijderd wordt voor het
uitpakken. Op het eerste gezicht kan dit een eenvoudige wijziging in het
script \fBpreinst\fP lijken. Nochtans kan dit enige problemen opleveren in het
geval de systeembeheerder de symbolische koppeling lokaal aanpaste of bij
een degradatie van het pakket.
.P
Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende
shell\-fragment te plaatsen in de scripts \fBpreinst\fP, \fBpostinst\fP en
\fBpostrm\fP van de pakketonderhouder:
.P
dpkg\-maintscript\-helper symlink_to_dir \e
\fIpadnaam\fP \fIoud\-doel\fP \fIvorige\-versie\fP \fIpakket\fP \-\- "$@"
.P
\fIpadnaam\fP is de absolute naam van de oude symbolische koppeling (op het
einde van de installatie zal het pad een map zijn) en \fIoud\-doel\fP is de naam
van het doel van de vroegere symbolische koppeling in \fIpadnaam\fP. Die kan
ofwel absoluut zijn ofwel relatief ten opzichte van de map die \fIpadnaam\fP
bevat.
.P
Huidige toepassing: het script \fBpreinst\fP gaat na of de symbolische
koppeling bestaat en verwijst naar \fIoud\-doel\fP. Is dit niet het geval dan
wordt ze gerust gelaten. Anders wordt ze hernoemd naar
\fIpadnaam\fP\fB.dpkg\-backup\fP. Tijdens het configureren verwijdert het script
\fBpostinst\fP \fIpadnaam\fP\fB.dpkg\-backup\fP indien \fIpadnaam\fP\fB.dpkg\-backup\fP nog
steeds een symbolische koppeling is. Bij een abort\-upgrade/abort\-install
(afbreken van de opwaardering/installatie) hernoemt het script \fBpostrm\fP
\fIpadnaam\fP\fB.dpkg\-backup\fP zo nodig terug naar \fIpadnaam\fP.
.
.SS "Een map omzetten naar een symbolische koppelling"
.
Indien een echte map omgezet wordt naar een symbolische koppeling, moet u
ervoor zorgen dat de map verwijderd wordt voor het uitpakken. Dit kan op het
eerste gezicht een eenvoudige aanpassing aan het script \fBpreinst\fP
lijken. Nochtans kan dit enige problemen opleveren in het geval de map
conffiles (configuratiebestanden) bevat, padnamen die eigendom zijn van
andere pakketten of lokaal aangemaakte padnamen, of in het geval het pakket
gedegradeerd wordt.
.P
Een elegante omschakeling kan gerealiseerd worden door het volgende
shell\-fragment op te nemen in de scripts \fBpreinst\fP, \fBpostinst\fP en
\fBpostrm\fP van de pakketonderhouder:
.P
dpkg\-maintscript\-helper dir_to_symlink \e
\fIpadnaam\fP \fInieuw\-doel\fP \fIvorige\-versie\fP \fIpakket\fP \-\- "$@"
.P
\fIpadnaam\fP is de absolute naam van de oude map (het pad zal op het einde van
de installatie een symbolische koppeling zijn) en \fInieuw\-doel\fP is het doel
van de nieuwe symbolische koppeling in \fIpadnaam\fP. Dit kan ofwel absoluut of
relatief zijn ten opzichte van de map die \fIpadnaam\fP bevat.
.P
Huidige toepassing: het script \fBpreinst\fP controleert of de map bestaat en
geen conffiles (configuratiebestanden), padnamen die eigendom zijn van
andere pakketten of lokaal aangemaakte padnamen bevat. Is dat niet het
geval, dan wordt ze gerust gelaten. Anders wordt ze hernoemd naar
\fIpadnaam\fP\fB.dpkg\-backup\fP en wordt een lege voorlopige map \fIpadnaam\fP
aangemaakt die met een bestand gemarkeerd wordt, zodat dpkg ze kan
opvolgen. Tijdens het configureren beëindigt het script \fBpostinst\fP de
overgang indien \fIpadnaam\fP\fB.dpkg\-backup\fP nog steeds een map is en
\fIpadnaam\fP de voorlopige map. Het verwijdert het bestand dat de voorlopige
map markeert en verplaatst de zopas in de map aangemaakte bestanden naar het
doel van de symbolische koppeling \fInieuw\-doel\fP/, vervangt de nu lege
voorlopige map \fIpadnaam\fP door een symbolische koppeling naar \fInieuw\-doel\fP
en verwijdert \fIpadnaam\fP\fB.dpkg\-backup\fP. In geval van
abort\-upgrade/abort\-install (afbreken van de opwaardering/installatie)
hernoemt het script \fBpostrm\fP zo nodig \fIpadnaam\fP\fB.dpkg\-backup\fP terug naar
\fIpadnaam\fP.
.
.SH "DE INTEGRATIE IN PAKKETTEN"
.P
Gelieve bij het gebruiken van een hulpmiddel voor het verpakken na te gaan
of er geen systeemeigen integratie in \fBdpkg\-maintscript\-helper\fP van
bestaat, wat het leven voor u makkelijker zou maken. Zie bijvoorbeeld
\fBdh_installdeb\fP(1).
.P
Gegeven het feit dat \fBdpkg\-maintscript\-helper\fP gebruikt wordt in het script
\fBpreinst\fP, houdt een onvoorwaardelijk gebruik ervan een voorafgaande
vereiste in om te kunnen garanderen dat de benodigde versie van \fBdpkg\fP
voordien uitgepakt werd. De benodigde versie hangt af van het gebruikte
commando. Voor \fBrm_conffile\fP en \fBmv_conffile\fP is dat 1.15.7.2. Voor
\fBsymlink_to_dir\fP en \fBdir_to_symlink\fP is dat 1.17.14:
.P
\fBPre\-Depends:\fP dpkg (>= 1.17.14)
.P
Maar in veel gevallen is de operatie die door het programma uitgevoerd
wordt, niet kritiek van aard voor het pakket en in plaats van een
voorafgaande vereiste te gebruiken, kunnen we ook het programma pas
aanroepen als we weten dat het benodigde programma ondersteund wordt door de
huidige geïnstalleerde versie van \fBdpkg\fP:
.P
if dpkg\-maintscript\-helper supports \fIcommando\fP; then
dpkg\-maintscript\-helper \fIcommando\fP ...
fi
.P
Het commando \fBsupports\fP geeft in geval van succes een 0 terug en anders een
1. Het commando \fBsupports\fP gaat na of de omgevingsvariabelen die ingesteld
worden door dpkg en die het script nodig heeft, voorhanden zijn. Indien de
omgeving niet voldoet, zal dit als een mislukking beschouwd worden.
.
.SH OMGEVING
.TP
\fBDPKG_COLORS\fP
Stelt de kleurmodus in (sinds dpkg 1.19.1). Waarden die momenteel gebruikt
mogen worden zijn: \fBauto\fP (standaard), \fBalways\fP en \fBnever\fP.
.
.SH "ZIE OOK"
.ad l
\fBdh_installdeb\fP(1).
|