summaryrefslogtreecommitdiffstats
path: root/man/nl/dpkg-maintscript-helper.pod
blob: 35f6f42892a3160d934368c6b03514e6ff540b3b (plain)
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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
        *****************************************************
        *           GENERATED FILE, DO NOT EDIT             *
        * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
        *****************************************************

This file was generated by po4a(7). Do not store it (in VCS, for example),
but store the PO file used as source file by po4a-translate.

In fact, consider this as a binary, and the PO file as a regular .c file:
If the PO get lost, keeping this translation up-to-date will be harder.

=encoding UTF-8

=head1 NAAM

dpkg-maintscript-helper - omzeilt in de scripts van de onderhouder gekende
beperkingen van dpkg

=head1 OVERZICHT

B<dpkg-maintscript-helper> I<commando> [I<parameter>...] B<-->
I<onderhouderscriptparameter>...

=head1 COMMANDO'S EN PARAMETERS

=over 

=item B<supports> I<commando>

=item B<rm_conffile> I<configuratiebestand> [I<vorige-versie> [I<pakket>]]

=item B<mv_conffile> I<oud-configuratiebestand> I<nieuw-configuratiebestand>
[I<vorige-versie> [I<pakket>]]

=item B<symlink_to_dir> I<padnaam> I<oud-doel> [I<vorige-versie> [I<pakket>]]

=item B<dir_to_symlink> I<padnaam> I<nieuw-doel> [I<vorige-versie> [I<pakket>]]

=back

=head1 BESCHRIJVING

Dit programma is ontwikkeld om uitgevoerd te worden binnenin
onderhouderscripts om sommige taken te verrichten die B<dpkg> (nog) niet
alleen kan uitvoeren, ofwel omwille van gemaakte keuzes inzake design ofwel
ten gevolge van actuele beperkingen.

Veel van deze taken vereisen gecoördineerde actie van verschillende
onderhouderscripts (B<preinst>, B<postinst>, B<prerm>, B<postrm>). 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 B<DPKG_MAINTSCRIPT_NAME> en de argumenten van de
onderhouderscripts die na een dubbel koppelteken opgegeven moeten worden.

=head1 GEMEENSCHAPPELIJKE PARAMETERS

=over 

=item I<vorige-versie>

Definieert de laatste versie van het pakket waarvan de opwaardering de
operatie moet uitlokken. Het is belangrijk om I<vorige-versie> correct te
berekenen, zodat de operaties correct uitgevoerd worden zelfs in het geval
de gebruiker het pakket met een lokaal versienummer herbouwde. Indien
I<vorige-versie> 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 I<vorige-versie> 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 B<2.0-1> van een pakket
verwijderd werd, moet I<vorige-versie> ingesteld worden op B<2.0-1~>. Dit
heeft tot effect dat het configuratiebestand verwijderd wordt, zelfs als de
gebruiker de vorige versie B<1.0-1> herbouwde als B<1.0-1lokaal1>. En in het
geval waarin in een pakket een pad eerst een symbolische koppeling was (bij
versie B<1.0-1>) en later een map werd (bij versie B<2.0-1>), maar u pas in
versie B<3.0-1> de eigenlijke omschakeling doorvoert in de scripts van de
pakketonderhouder, moet I<vorige-versie> ingesteld worden op B<3.0-1~>.

=item I<pakket>

De pakketnaam met die padnaam/namen. Als het pakket “Multi-Arch: same” is,
moet deze parameter de architectuurkwalificatie bevatten, anders zou er
gewoonlijk B<geen> architectuurkwalificatie in moeten voorkomen (aangezien
dit geen cross-grades zou toelaten, of de omschakeling van
architectuurspecifiek naar architectuur B<all> en vice versa). Indien de
parameter leeg is of weggelaten werd, zullen de omgevingsvariabelen
B<DPKG_MAINTSCRIPT_PACKAGE> en B<DPKG_MAINTSCRIPT_ARCH> (zoals die door
B<dpkg> ingesteld werden bij het uitvoeren van de scripts van de
onderhouder) gebruikt worden om een pakketnaam met architectuurkwalificatie
te genereren.

=item B<-->

Alle parameters van de scripts van de pakketonderhouder moeten doorgegeven
worden aan het programma na B<-->.

=back

=head1 TAKEN IN VERBAND MET CONFIGURATIEBESTANDEN

Bij het opwaarderen van een pakket zal B<dpkg> niet automatisch een
configuratiebestand van het type conffile (conffile = een
configuratiebestand waarin B<dpkg> 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.

Dit houdt in dat indien een pakket de bedoeling heeft om een
configuratiebestand te hernoemen of te verwijderen, het dit expliciet moet
doen en dat B<dpkg-maintscript-helper> kan gebruikt worden in scripts van de
pakketonderhouder om het verwijderen en verplaatsen van
configuratiebestanden op een elegante manier uit te voeren.

=head2 Een configuratiebestand verwijderen

Opmerking: In de meeste gevallen kan dit vervangen worden door de vlag
C<remove-on-upgrade> in F<DEBIAN/conffiles> (sinds dpkg 1.20.6), zie
L<deb-conffiles(5)>.

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.

Dit alles wordt toegepast door het volgende shell-fragment te plaatsen in de
scripts B<preinst>, B<postinst> en B<postrm> van de pakketonderhouder:

=over 

Z<>
 dpkg-maintscript-helper rm_conffile \
    I<configuratiebestand> I<vorige-versie> I<pakket> -- "$@"

=back

I<configuratiebestand> is de bestandsnaam van het te verwijderen
configuratiebestand.

Huidige toepassing: in het script B<preinst> controleert het of het
configuratiebestand gewijzigd werd en hernoemt het ofwel naar
I<configuratiebestand>B<.dpkg-remove> (als het niet gewijzigd was) of naar
I<configuratiebestand>B<.dpkg-backup> (als het wel gewijzigd was). In het
script B<postinst> wordt dit laatste bestand hernoemd naar
I<configuratiebestand>B<.dpkg-bak> 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 B<postrm> het originele configuratiebestand. Tijdens het
uitvoeren van een wisopdracht (purge) zal het script B<postrm> ook het tot
dan bewaarde bestand B<.dpkg-bak> verwijderen.

=head2 Een configuratiebestand hernoemen

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 B<preinst>. Dat zal evenwel als resultaat hebben
dat de gebruiker door B<dpkg> gevraagd wordt om de aanpassingen aan het
configuratiebestand goed te keuren, al is hij er in dit geval niet voor
verantwoordelijk.

Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende
shell-fragment te plaatsen in de scripts B<preinst>, B<postinst> en
B<postrm> van de pakketonderhouder:

=over 

Z<>
 dpkg-maintscript-helper mv_conffile \
    I<oud-configuratiebestand> I<nieuw-configuratiebestand> I<vorige-versie> I<pakket> -- "$@"

=back

I<oud-configuratiebestand> en I<nieuw-configuratiebestand> zijn de oude en
de nieuwe naam van het configuratiebestand dat hernoemd moet worden.

Huidige toepassing: het script B<preinst> controleert of het
configuratiebestand gewijzigd werd. Indien dat het geval is wordt het
gelaten waar het is, anders wordt het hernoemd naar
I<oud-configuratiebestand>B<.dpkg-remove>. Bij het configureren verwijdert
het script B<postinst> I<oud-configuratiebestand>B<.dpkg-remove> en hernoemt
I<oud-configuratiebestand> naar I<nieuw-configuratiebestand> als
I<oud-configuratiebestand> nog steeds voorhanden is. Bij
abort-upgrade/abort-install (afbreken van de opwaardering/installatie)
hernoemt het script B<postrm> zo nodig
I<oud-configuratiebestand>B<.dpkg-remove> terug naar
I<oud-configuratiebestand>.

=head1 OMSCHAKELEN TUSSEN SYMBOLISCHE KOPPELING EN MAP

Bij het opwaarderen van een pakket zal B<dpkg> niet automatisch een
symbolische koppeling omzetten naar een map of vice versa. Degradaties
worden niet ondersteund en het pad wordt onveranderd gelaten.

=head2 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 B<preinst> lijken. Nochtans kan dit enige problemen opleveren in het
geval de systeembeheerder de symbolische koppeling lokaal aanpaste of bij
een degradatie van het pakket.

Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende
shell-fragment te plaatsen in de scripts B<preinst>, B<postinst> en
B<postrm> van de pakketonderhouder:

=over 

Z<>
 dpkg-maintscript-helper symlink_to_dir \
    I<padnaam> I<oud-doel> I<vorige-versie> I<pakket> -- "$@"

=back

I<padnaam> is de absolute naam van de oude symbolische koppeling (op het
einde van de installatie zal het pad een map zijn) en I<oud-doel> is de naam
van het doel van de vroegere symbolische koppeling in I<padnaam>. Die kan
ofwel absoluut zijn ofwel relatief ten opzichte van de map die I<padnaam>
bevat.

Huidige toepassing: het script B<preinst> gaat na of de symbolische
koppeling bestaat en verwijst naar I<oud-doel>. Is dit niet het geval dan
wordt ze gerust gelaten. Anders wordt ze hernoemd naar
I<padnaam>B<.dpkg-backup>. Tijdens het configureren verwijdert het script
B<postinst> I<padnaam>B<.dpkg-backup> indien I<padnaam>B<.dpkg-backup> nog
steeds een symbolische koppeling is. Bij een abort-upgrade/abort-install
(afbreken van de opwaardering/installatie) hernoemt het script B<postrm>
I<padnaam>B<.dpkg-backup> zo nodig terug naar I<padnaam>.

=head2 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 B<preinst>
lijken. Nochtans kan dit enige problemen opleveren in het geval de map
configuratiebestanden bevat, padnamen die eigendom zijn van andere pakketten
of lokaal aangemaakte padnamen, of in het geval het pakket gedegradeerd
wordt.

Een elegante omschakeling kan gerealiseerd worden door het volgende
shell-fragment op te nemen in de scripts B<preinst>, B<postinst> en
B<postrm> van de pakketonderhouder:

=over 

Z<>
 dpkg-maintscript-helper dir_to_symlink \
    I<padnaam> I<nieuw-doel> I<vorige-versie> I<pakket> -- "$@"

=back

I<padnaam> is de absolute naam van de oude map (het pad zal op het einde van
de installatie een symbolische koppeling zijn) en I<nieuw-doel> is het doel
van de nieuwe symbolische koppeling in I<padnaam>. Dit kan ofwel absoluut of
relatief zijn ten opzichte van de map die I<padnaam> bevat.

Huidige toepassing: het script B<preinst> controleert of de map bestaat en
geen 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 I<padnaam>B<.dpkg-backup> en
wordt een lege voorlopige map I<padnaam> aangemaakt die met een bestand
gemarkeerd wordt, zodat dpkg ze kan opvolgen. Tijdens het configureren
beëindigt het script B<postinst> de overgang indien
I<padnaam>B<.dpkg-backup> nog steeds een map is en I<padnaam> 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 I<nieuw-doel>/, vervangt de nu lege voorlopige map I<padnaam> door
een symbolische koppeling naar I<nieuw-doel> en verwijdert
I<padnaam>B<.dpkg-backup>. In geval van abort-upgrade/abort-install
(afbreken van de opwaardering/installatie) hernoemt het script B<postrm> zo
nodig I<padnaam>B<.dpkg-backup> terug naar I<padnaam>.

=head1 DE INTEGRATIE IN PAKKETTEN

Gelieve bij het gebruiken van een hulpmiddel voor het verpakken na te gaan
of er geen systeemeigen integratie in B<dpkg-maintscript-helper> van
bestaat, wat het leven voor u makkelijker zou maken. Zie bijvoorbeeld
B<dh_installdeb>(1).

Gegeven het feit dat B<dpkg-maintscript-helper> gebruikt wordt in het script
B<preinst>, houdt een onvoorwaardelijk gebruik ervan een voorafgaande
vereiste in om te kunnen garanderen dat de benodigde versie van B<dpkg>
voordien uitgepakt werd. De benodigde versie hangt af van het gebruikte
commando. Voor B<rm_conffile> en B<mv_conffile> is dat 1.15.7.2. Voor
B<symlink_to_dir> en B<dir_to_symlink> is dat 1.17.14:

=over 

 Pre-Depends: dpkg (>= 1.17.14)

=back

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 B<dpkg>:

=over 

Z<>
 if dpkg-maintscript-helper supports I<commando>; then
    dpkg-maintscript-helper I<commando> ...
 fi

=back

Het commando B<supports> geeft in geval van succes een 0 terug en anders een
1. Het commando B<supports> 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.

=head1 OMGEVING

=over 

=item B<DPKG_ROOT>

Indien dit ingesteld werd, zal dit gebruikt worden als de basismap van het
bestandssysteem.

=item B<DPKG_ADMINDIR>

Indien dit ingesteld werd, zal dit gebruikt worden als de datamap voor
B<dpkg>.

=item B<DPKG_COLORS>

Stelt de kleurmodus in (sinds dpkg 1.19.1). Waarden die momenteel gebruikt
mogen worden zijn: B<auto> (standaard), B<always> en B<never>.

=back

=head1 ZIE OOK

B<dh_installdeb>(1).