Provided by:
dpkg_1.16.0.3ubuntu5_i386 
NAMN
dpkg-maintscript-helper - gar runt kanda dpkg-begransningar i
paketskript
SYNOPS
dpkg-maintscript-helper kommando [flaggor...] -- maint-script-flaggor
KOMMANDON OCH PARAMETRAR
rm_conffile konffil [senasteversion [paket]]
mv_conffile gammalkonffil nykonffil [senasteverison [paket]]
BESKRIVNING
Programmet skrevs for att koras i paketskript for att utfora en del
atgarder som dpkg (annu) inte sjalv kan hantera, antingen pa grund av
designval eller pa grund av nuvarande begransningar.
Manga av dessa atgarder kraver samordnade atgarder fran flera
paketskript (preint, postinst, prerm, postrm). For att undvika misstag
racker det att lagga in ett och samma anrop i alla skript, varpa
programmet anpassar sitt beteende beroende pa miljovariabeln
DPKG_MAINTSCRIPT_NAME och pa paketskriptets parametrar, vilka du maste
vidaresanda efter dubbla bindestreck.
KONFFIL-RELATERADE oATG"ARDER
Nar ett paket uppgraders kommer dpkg inte att automatiskt ta bort en
konffil (en konfigurationsfil for vilken dpkg skall behalla anvandarens
andringar) om den inte finns i den nya versionen. Det finns tva
grundlaggande skal till detta; den forsta ar att konffilen kan ha
tappats av misstag och nasta version kan komma att aterstalla den,
varpa anvandaren inte vill tappa sina andringar. Den andra ar att for
att gora det mojligt for paket att ga over fran en dpkg-hanterad
konffil till en fil som hanteras av paketets skript, vanligtvis genom
ett verktyg som debconf eller ucf.
Det innebar att, om paketet menar att byta namn eller ta bort en
konfigurationsfil, sa maste det gora sa explicit, och da kan
dpkg-maintscript-helper anvandas for att implementera en elegant
borttagning och flyttning av konffiler i paketscripten.
TA BORT EN KONFFIL
Om en konffil helt tas bort bor den tas bort fran disk, savida inte
anvandaren har modifierat den. Om det finns lokala andringar bor de
bibehallas. Om paketuppgraderingen avbryts bor inte konffilen som just
blev foraldras forsvinna.
Allt detta implementeras genom att lagga in foljande skalkod i
paketskripten preinst, postinst och postrm:
dpkg-maintscript-helper rm_conffile \
konffil senasteversion paket -- "$@"
konffil ar filnamnet pa den konffil som skall tas bort. senasteversion
ar den senaste versionen av paketet som inneholl konffilen (eller den
senaste versionen av paketet som inte tog hand om att ta bort den
overblivna konffilen om detta inte omedelbart implementerades). Om
senasteversion ar tomt eller inte angivits forsoks operationen varje
gang paketet uppgraderas. paket ar paketnamnet, det ar frivilligt
eftersom det faller tillbaka pa $DPKG_MAINSTCRIPT_PACKAGE (variabeln
satts av dpkg till namnet pa det paket som behandlas). Alla paramerar
till paketskriptet maste vidaresandas till programmet efter "--".
Aktuell implementation: i preinst kontrolleras om konffilen andrades
och i sa fall byts namnet pa den till antingen konffil.dpkg-remove (om
inte modifierad) eller till konffil.dpkg-backup (om modifierad). I
postinst byts namnet pa den sistnamnda filen till konffil.dpkg-bak och
behalls som referens om den innehaller andringar av anvandaren, medan
den tidigare kommer att tas bort. Om paketuppgraderingen avbryts kommer
postrm att ominstallera den ursprungliga konffilen. Vid borttagning
kommer postrm aven att ta bort .dpkg-bak-filen som behallits fram till
dess.
BYTA NAMN PoA EN KONFFIL
Om en konffil flyttas fran en plats till en annan maste du se till att
du flyttar med eventuella andringar gjorda av anvandaren. Detta kan
forst verka vara en enkel andring av preinst-skriptet, men det kommer
leda till att anvandaren ombeds att godkanna andringar i konffilen for
dpkg, aven om denne inte ar ansvarig for dem.
En elegant namnandring kan implementeras genom att lagga in foljande
skalkod i paketskripten preinst, postinst och postrm:
dpkg-maintscript-helper mv_conffile \
gammalkonffil nykonffil senasteversion paket -- "$@"
gammalkonffil och nykonffil ar det gamla och nya namnet pa konffilen
vars namn skall bytas. senasteversion ar den senaste versionen av
paketet som inneholl konffilen med dess gamla namn. Om senasteversion
ar tom eller inte har angivits kommer operationen att forsokas varje
gang paketet uppgraderas (observera: det ar sakrare att ange versionen
och darmed endast utfora operationen en gang). paket ar paketnamnet,
det ar frivilligt eftersom det faller tillbaka pa
$DPKG_MAINSTCRIPT_PACKAGE (variabeln satts av dpkg till namnet pa det
paket som behandlas). Alla paramerar till paketskriptet maste
vidaresandas till programmet efter "--".
Aktuell implementation: I preinst kontrolleras om konffilen har
andrats, om ja lamnas den kvar pa plats, annars byts namnet pa den till
gammalkonffil.dpkg-remove. Vid konfigurering tar postinst bort
gammalkonffil.dpkg-remove och byter namn pa gammalkonffil till
nykonffil om gammalkonffil fortfarande finns. Vid avbruten uppgradering
eller installation byter postrm tillbaka namnet fran
gammalkonffil.dpkg-remove till gammalkonffil om sa behovs.
INTEGRERA I PAKET
Given that dpkg-maintscript-helper is used in the preinst, using it
unconditionally requires a pre-dependency to ensure that the required
version of dpkg has been unpacked before. The required version depends
on the command used, for rm_conffile and mv_conffile it is 1.15.7.2:
Pre-Depends: dpkg (>= 1.15.7.2)
Men i manga fall ar operationen som utfors av programmet inte kritiskt
for paketet, och istallet for att anvanda ett forhandsberoende kan vi
anropa programmet endast om vi vet att det nodvandiga kommandot stods
av den nu installerade dpkg:
if dpkg-maintscript-helper supports <kommando>; then
dpkg-maintscript-helper <kommando> ...
fi
F"ORFATTARE
Upphovsrattsskyddat (C) 2010 Raphael Hertzog
Upphovsrattsskyddat (C) 2008 Joey Hess
Upphovsrattsskyddat (C) 2007 Guillem Jover
Upphovsrattsskyddat (C) 2005 Scott James Remnant
Detta ar fri programvara; se GNU General Public License version 2 eller
senare for kopieringsvillkor. Det finns INGEN GARANTI.
"OVERS"ATTNING
Peter Krefting och Daniel Nylander.