blob: b530126dd967155b46e5449369497a56331393ea [file] [log] [blame]
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH dpkg\-maintscript\-helper 1 2011\-08\-14 Debianprojektet Dpkg\-sviten
.SH NAMN
dpkg\-maintscript\-helper \- går runt kända dpkg\-begränsningar i paketskript
.
.SH SYNOPS
\fBdpkg\-maintscript\-helper\fP \fIkommando\fP [\fIflagga\fP...] \fB\-\-\fP
\fImaint\-script\-flagga\fP...
.
.SH "KOMMANDON OCH PARAMETRAR"
.P
\fBrm_conffile\fP \fIkonffil\fP [\fIsenasteversion\fP [\fIpaket\fP]]
.P
\fBmv_conffile\fP \fIgammalkonffil\fP \fInykonffil\fP [\fIsenasteverison\fP [\fIpaket\fP]]
.
.SH BESKRIVNING
.P
Programmet skrevs för att köras i paketskript för att utföra en del åtgärder
som dpkg nnu) inte själv kan hantera, antingen på grund av designval eller
på grund av nuvarande begränsningar.
.P
Många av dessa åtgärder kräver samordnade åtgärder från flera paketskript
(\fBpreint\fP, \fBpostinst\fP, \fBprerm\fP, \fBpostrm\fP). För att undvika misstag
räcker det att lägga in ett och samma anrop i alla skript, varpå programmet
anpassar sitt beteende beroende på miljövariabeln \fBDPKG_MAINTSCRIPT_NAME\fP
och på paketskriptets parametrar, vilka du måste vidaresända efter dubbla
bindestreck.
.
.SH "KONFFIL\-RELATERADE ÅTGÄRDER"
.P
När ett paket uppgraders kommer dpkg inte att automatiskt ta bort en konffil
(en konfigurationsfil för vilken dpkg skall behålla användarens ändringar)
om den inte finns i den nya versionen. Det finns två grundläggande skäl till
detta; den första är att konffilen kan ha tappats av misstag och nästa
version kan komma att återställa den, varpå användaren inte vill tappa sina
ändringar. Den andra är att för att göra det möjligt för paket att gå över
från en dpkg\-hanterad konffil till en fil som hanteras av paketets skript,
vanligtvis genom ett verktyg som debconf eller ucf.
.P
Det innebär att, om paketet menar att byta namn eller ta bort en
konfigurationsfil, så måste det göra så explicit, och då kan
\fBdpkg\-maintscript\-helper\fP användas för att implementera en elegant
borttagning och flyttning av konffiler i paketscripten.
.
.SS "TA BORT EN KONFFIL"
.P
Om en konffil helt tas bort bör den tas bort från disk, såvida inte
användaren har modifierat den. Om det finns lokala ändringar bör de
bibehållas. Om paketuppgraderingen avbryts bör inte konffilen som just blev
föråldras försvinna.
.P
Allt detta implementeras genom att lägga in följande skalkod i paketskripten
\fBpreinst\fP, \fBpostinst\fP och \fBpostrm\fP:
.P
dpkg\-maintscript\-helper rm_conffile \e
\fIkonffil\fP \fIsenasteversion\fP \fIpaket\fP \-\- "$@"
.P
\fIkonffil\fP är filnamnet på den konffil som skall tas bort. \fIsenasteversion\fP
är den senaste versionen av paketet som innehöll konffilen (eller den
senaste versionen av paketet som inte tog hand om att ta bort den överblivna
konffilen om detta inte omedelbart implementerades). Om \fIsenasteversion\fP är
tomt eller inte angivits försöks operationen varje gång paketet
uppgraderas. \fIpaket\fP är paketnamnet, det är frivilligt eftersom det faller
tillbaka på $DPKG_MAINSTCRIPT_PACKAGE (variabeln sätts av dpkg till namnet
på det paket som behandlas). Alla paramerar till paketskriptet måste
vidaresändas till programmet efter "\-\-".
.P
Aktuell implementation: i \fBpreinst\fP kontrolleras om konffilen ändrades och
i så fall byts namnet på den till antingen \fIkonffil\fP\fB.dpkg\-remove\fP (om
inte modifierad) eller till \fIkonffil\fP\fB.dpkg\-backup\fP (om modifierad). I
\fBpostinst\fP byts namnet på den sistnämnda filen till \fIkonffil\fP\fB.dpkg\-bak\fP
och behålls som referens om den innehåller ändringar av användaren, medan
den tidigare kommer att tas bort. Om paketuppgraderingen avbryts kommer
\fBpostrm\fP att ominstallera den ursprungliga konffilen. Vid borttagning
kommer \fBpostrm\fP även att ta bort \fB.dpkg\-bak\fP\-filen som behållits fram till
dess.
.
.SS "BYTA NAMN PÅ EN KONFFIL"
.P
Om en konffil flyttas från en plats till en annan måste du se till att du
flyttar med eventuella ändringar gjorda av användaren. Detta kan först verka
vara en enkel ändring av \fBpreinst\fP\-skriptet, men det kommer leda till att
användaren ombeds att godkänna ändringar i konffilen för dpkg, även om denne
inte är ansvarig för dem.
.P
En elegant namnändring kan implementeras genom att lägga in följande skalkod
i paketskripten \fBpreinst\fP, \fBpostinst\fP och \fBpostrm\fP:
.P
dpkg\-maintscript\-helper mv_conffile \e
\fIgammalkonffil\fP \fInykonffil\fP \fIsenasteversion\fP \fIpaket\fP \-\- "$@"
.P
\fIgammalkonffil\fP och \fInykonffil\fP är det gamla och nya namnet på konffilen
vars namn skall bytas. \fIsenasteversion\fP är den senaste versionen av paketet
som innehöll konffilen med dess gamla namn. Om \fIsenasteversion\fP är tom
eller inte har angivits kommer operationen att försökas varje gång paketet
uppgraderas (observera: det är säkrare att ange versionen och därmed endast
utföra operationen en gång). \fIpaket\fP är paketnamnet, det är frivilligt
eftersom det faller tillbaka på $DPKG_MAINSTCRIPT_PACKAGE (variabeln sätts
av dpkg till namnet på det paket som behandlas). Alla paramerar till
paketskriptet måste vidaresändas till programmet efter "\-\-".
.P
Aktuell implementation: I \fBpreinst\fP kontrolleras om konffilen har ändrats,
om ja lämnas den kvar på plats, annars byts namnet på den till
\fIgammalkonffil\fP\fB.dpkg\-remove\fP. Vid konfigurering tar \fBpostinst\fP bort
\fIgammalkonffil\fP\fB.dpkg\-remove\fP och byter namn på \fIgammalkonffil\fP till
\fInykonffil\fP om \fIgammalkonffil\fP fortfarande finns. Vid avbruten
uppgradering eller installation byter \fBpostrm\fP tillbaka namnet från
\fIgammalkonffil\fP\fB.dpkg\-remove\fP till \fIgammalkonffil\fP om så behövs.
.
.SH "INTEGRERA I PAKET"
.P
Givet att \fBdpkg\-maintscript\-helper\fP används i \fBpreinst\fP så innebär detta
villkorslöst att ett förhandsberoende ("pre\-dependency") krävs för att
försäkra att den nödvändiga versionen av dpkg redan har packats upp. Den
version som krävs beror på vilket kommando som används, för \fBrm_conffile\fP
och \fBmv_conffile\fP är det 1.15.7.2:
.P
\fBPre\-Depends:\fP dpkg (>= 1.15.7.2)
.P
Men i många fall är operationen som utförs av programmet inte kritiskt för
paketet, och istället för att använda ett förhandsberoende kan vi anropa
programmet endast om vi vet att det nödvändiga kommandot stöds av den nu
installerade dpkg:
.P
if dpkg\-maintscript\-helper supports \fIkommando\fP; then
dpkg\-maintscript\-helper \fIkommando\fP ...
fi
.
.SH FÖRFATTARE
Upphovsrättsskyddat © 2010 Raphaël Hertzog
.br
Upphovsrättsskyddat © 2008 Joey Hess
.br
Upphovsrättsskyddat © 2007 Guillem Jover
.br
Upphovsrättsskyddat © 2005 Scott James Remnant
.sp
Detta är fri programvara; se GNU General Public License version 2 eller
senare för kopieringsvillkor. Det finns INGEN GARANTI.
.SH "ÖVERSÄTTNING"
Peter Krefting och Daniel Nylander.