Provided by:
dpkg_1.15.8.4ubuntu3_i386 
NAMN
dpkg-maintscript-helper - gr runt knda dpkg-begrnsningar 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 fr att kras i paketskript fr att utfra en del tgrder
som dpkg (nnu) inte sjlv kan hantera, antingen p grund av designval
eller p grund av nuvarande begrnsningar.
Mnga av dessa tgrder krver samordnade tgrder frn flera paketskript
(preint, postinst, prerm, postrm). Fr att undvika misstag rcker det att
lgga in ett och samma anrop i alla skript, varp programmet anpassar
sitt beteende beroende p miljvariabeln DPKG_MAINTSCRIPT_NAME och p
paketskriptets parametrar, vilka du mste vidaresnda efter dubbla
bindestreck.
KONFFIL-RELATERADE TGRDER
Nr ett paket uppgraders kommer dpkg inte att automatiskt ta bort en
konffil (en konfigurationsfil fr vilken dpkg skall behlla anvndarens
ndringar) om den inte finns i den nya versionen. Det finns tv
grundlggande skl till detta; den frsta r att konffilen kan ha tappats
av misstag och nsta version kan komma att terstlla den, varp anvndaren
inte vill tappa sina ndringar. Den andra r att fr att gra det mjligt fr
paket att g ver frn en dpkg-hanterad konffil till en fil som hanteras
av paketets skript, vanligtvis genom ett verktyg som debconf eller ucf.
Det innebr att, om paketet menar att byta namn eller ta bort en
konfigurationsfil, s mste det gra s explicit, och d kan
dpkg-maintscript-helper anvndas fr att implementera en elegant
borttagning och flyttning av konffiler i paketscripten.
TA BORT EN KONFFIL
Om en konffil helt tas bort br den tas bort frn disk, svida inte
anvndaren har modifierat den. Om det finns lokala ndringar br de
bibehllas. Om paketuppgraderingen avbryts br inte konffilen som just
blev frldras frsvinna.
Allt detta implementeras genom att lgga in fljande skalkod i
paketskripten preinst, postinst och postrm:
dpkg-maintscript-helper rm_conffile \
konffil senasteversion paket -- "$@"
konffil r filnamnet p den konffil som skall tas bort. senasteversion r
den senaste versionen av paketet som innehll konffilen (eller den
senaste versionen av paketet som inte tog hand om att ta bort den
verblivna konffilen om detta inte omedelbart implementerades). Om
senasteversion r tomt eller inte angivits frsks operationen varje gng
paketet uppgraderas. paket r paketnamnet, det r frivilligt eftersom det
faller tillbaka p $DPKG_MAINSTCRIPT_PACKAGE (variabeln stts av dpkg
till namnet p det paket som behandlas). Alla paramerar till
paketskriptet mste vidaresndas till programmet efter "--".
Aktuell implementation: i preinst kontrolleras om konffilen ndrades och
i s fall byts namnet p den till antingen konffil.dpkg-remove (om inte
modifierad) eller till konffil.dpkg-backup (om modifierad). I postinst
byts namnet p den sistnmnda filen till konffil.dpkg-bak och behlls som
referens om den innehller ndringar av anvndaren, medan den tidigare
kommer att tas bort. Om paketuppgraderingen avbryts kommer postrm att
ominstallera den ursprungliga konffilen. Vid borttagning kommer postrm
ven att ta bort .dpkg-bak-filen som behllits fram till dess.
BYTA NAMN P EN KONFFIL
Om en konffil flyttas frn en plats till en annan mste du se till att du
flyttar med eventuella ndringar gjorda av anvndaren. Detta kan frst
verka vara en enkel ndring av preinst-skriptet, men det kommer leda
till att anvndaren ombeds att godknna ndringar i konffilen fr dpkg, ven
om denne inte r ansvarig fr dem.
En elegant namnndring kan implementeras genom att lgga in fljande
skalkod i paketskripten preinst, postinst och postrm:
dpkg-maintscript-helper mv_conffile \
gammalkonffil nykonffil senasteversion paket -- "$@"
gammalkonffil och nykonffil r det gamla och nya namnet p konffilen vars
namn skall bytas. senasteversion r den senaste versionen av paketet som
innehll konffilen med dess gamla namn. Om senasteversion r tom eller
inte har angivits kommer operationen att frskas varje gng paketet
uppgraderas (observera: det r skrare att ange versionen och drmed
endast utfra operationen en gng). paket r paketnamnet, det r frivilligt
eftersom det faller tillbaka p $DPKG_MAINSTCRIPT_PACKAGE (variabeln
stts av dpkg till namnet p det paket som behandlas). Alla paramerar
till paketskriptet mste vidaresndas till programmet efter "--".
Aktuell implementation: I preinst kontrolleras om konffilen har ndrats,
om ja lmnas den kvar p plats, annars byts namnet p den till
gammalkonffil.dpkg-remove. Vid konfigurering tar postinst bort
gammalkonffil.dpkg-remove och byter namn p gammalkonffil till nykonffil
om gammalkonffil fortfarande finns. Vid avbruten uppgradering eller
installation byter postrm tillbaka namnet frn gammalkonffil.dpkg-remove
till gammalkonffil om s behvs.
INTEGRERA I PAKET
Givet att dpkg-maintscript-helper anvnds i preinst s innebr detta
villkorslst att ett frhandsberoende ("pre-dependency") krvs fr att
frskra att den ndvndiga versionen av dpkg redan har konfigurerats. Den
version som krvs beror p vilket kommando som anvnds, fr rm_conffile och
mv_conffile r det 1.15.7.2:
Pre-Depends: dpkg (>= 1.15.7.2)
Men i mnga fall r operationen som utfrs av programmet inte kritiskt fr
paketet, och istllet fr att anvnda ett frhandsberoende kan vi anropa
programmet endast om vi vet att det ndvndiga kommandot stds av den nu
installerade dpkg:
if dpkg-maintscript-helper supports <kommando>; then
dpkg-maintscript-helper <kommando> ...
fi
FRFATTARE
Upphovsrttsskyddat 2010 Raphal Hertzog
Upphovsrttsskyddat 2008 Joey Hess
Upphovsrttsskyddat 2007 Guillem Jover
Upphovsrttsskyddat 2005 Scott James Remnant
Detta r fri programvara; se GNU General Public License version 2 eller
senare fr kopieringsvillkor. Det finns INGEN GARANTI.
VERSTTNING
Peter Krefting och Daniel Nylander.