.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "dpkg-maintscript-helper 1" .TH dpkg-maintscript-helper 1 2024-01-19 1.22.3 "dpkg suite" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAMN .IX Header "NAMN" dpkg-maintscript-helper \- g\(oar runt k\(:anda dpkg\-begr\(:ansningar i paketskript .SH SYNOPS .IX Header "SYNOPS" \&\fBdpkg-maintscript-helper\fR \fIkommando\fR [\fIflagga\fR...] \fB\-\-\fR \fImaint-script-flagga\fR... .SH "KOMMANDON OCH PARAMETRAR" .IX Header "KOMMANDON OCH PARAMETRAR" .IP "\fBsupports\fR \fIkommando\fR" 4 .IX Item "supports kommando" .PD 0 .IP "\fBrm_conffile\fR \fIkonffil\fR [\fItidigare-version\fR [\fIpaket\fR]]" 4 .IX Item "rm_conffile konffil [tidigare-version [paket]]" .IP "\fBmv_conffile\fR \fIgammalkonffil\fR \fInykonffil\fR [\fItidigare-version\fR [\fIpaket\fR]]" 4 .IX Item "mv_conffile gammalkonffil nykonffil [tidigare-version [paket]]" .IP "\fBsymlink_to_dir\fR \fIs\(:okv\(:ag\fR \fIgammalt\-m\(oal\fR [\fItidigare-version\fR [\fIpaket\fR]]" 4 .IX Item "symlink_to_dir s\(:okv\(:ag gammalt-m\(oal [tidigare-version [paket]]" .IP "\fBdir_to_symlink\fR \fIs\(:okv\(:ag\fR \fInytt\-m\(oal\fR [\fItidigare-version\fR [\fIpaket\fR]]" 4 .IX Item "dir_to_symlink s\(:okv\(:ag nytt-m\(oal [tidigare-version [paket]]" .PD .SH BESKRIVNING .IX Header "BESKRIVNING" Programmet skrevs f\(:or att k\(:oras i paketskript f\(:or att utf\(:ora en del \(oatg\(:arder som \fBdpkg\fR (\(:annu) inte sj\(:alv kan hantera, antingen p\(oa grund av designval eller p\(oa grund av nuvarande begr\(:ansningar. .PP M\(oanga av dessa \(oatg\(:arder kr\(:aver samordnade \(oatg\(:arder fr\(oan flera paketskript (\fBpreint\fR, \fBpostinst\fR, \fBprerm\fR, \fBpostrm\fR). F\(:or att undvika misstag r\(:acker det att l\(:agga in ett och samma anrop i alla skript, varp\(oa programmet anpassar sitt beteende beroende p\(oa milj\(:ovariabeln \fBDPKG_MAINTSCRIPT_NAME\fR och p\(oa paketskriptets parametrar, vilka du m\(oaste vidares\(:anda efter dubbla bindestreck. .PP Kommandot introducerades i dpkg 1.15.7.. .SH "DELADE PARAMETRAR" .IX Header "DELADE PARAMETRAR" .IP \fItidigare-version\fR 4 .IX Item "tidigare-version" Anger den senaste version av paketet vars uppgradering ska orsaka h\(:andelsen. Det \(:ar viktigt att ber\(:akna \fItidigare-version\fR korrekt s\(oa att operationerna utf\(:ors korrekt \(:aven om anv\(:andaren byggt om paketet med en lokal version. Om \fItidigare-version\fR \(:ar tom eller utel\(:amnas f\(:ors\(:oks operationen vid varje uppgradering (notera: det \(:ar s\(:akrare att ange versionen och endast f\(:ors\(:oka utf\(:ora operationen en g\(oang). .Sp Om konffilen inte har s\(:ants med i flera versioner och du nu uppdaterar utvecklarskripten till att st\(:ada bort den gamla filen b\(:or \fItidigare-version\fR baseras p\(oa den version av paketet du nu f\(:orbereder, inte den f\(:orsta version av paketet som saknade konffilen. Detta g\(:aller p\(oa samma s\(:att f\(:or alla andra \(oatg\(:arder. .Sp Som ett exempel, f\(:or en konffil som togs bort i version \fB2.0\-1\fR av ett paket b\(:or \fItidigareversion\fR s\(:attas till \fB2.0\-1~\fR. Detta f\(oar konffilen att tas bort \(:aven om anv\(:andaren bygger om den tidigare versionen \fB1.0\-1\fR som \fB1.0\-1local1\fR. Eller ett paket som bytt en s\(:okv\(:ag fr\(oan att vara en symbolisk l\(:ank (skeppad i version \fB1.0\-1\fR) till en katalog (skeppad i version \fB2.0\-1\fR), men bara utf\(:ort sj\(:alva \(:andringen i utvecklarskripten i version \fB3.0\-1\fR, b\(:or s\(:atta \fItidigareversion\fR till \fB3.0\-1~\fR. .IP \fIpaket\fR 4 .IX Item "paket" Paketnamnet som \(:ager s\(:okv\(:agsnamnet/\-en. N\(:ar paketet \(:ar \(rqMulti\-Arch: same\(rq m\(oaste parametern inneh\(oalla arkitekturkvalificeraren, i andra fall b\(:or den \fBinte\fR inneh\(oalla arkitekturkvalificeraren (eftersom det skulle hindra korsgraderingar, eller byte fr\(oan att vara arkitekturspecifikt till \fBall\fR\-arkitektur eller vice veras). Om parametern \(:ar tom eller inte anges, kommer milj\(:ovariablerna \fBDPKG_MAINTSCRIPT_PACKAGE\fR och \fBDPKG_MAINTSCRIPT_ARCH\fR (som satta av \fBdpkg\fR n\(:ar utvecklarskripten k\(:ors) att anv\(:andas f\(:or att skapa ett arkitekturkvalificerat paketnamn. .IP \fB\-\-\fR 4 .IX Item "--" Alla parametrar till utvecklarskripten m\(oaste vidares\(:andas till programmen efter \fB\-\-\fR. .SH "KONFFIL-RELATERADE \(oATG\(:ARDER" .IX Header "KONFFIL-RELATERADE \(oATG\(:ARDER" N\(:ar ett paket uppgraderas kommer \fBdpkg\fR inte att automatiskt ta bort en konffil (en konfigurationsfil f\(:or vilken \fBdpkg\fR ska beh\(oalla anv\(:andarens \(:andringar) om den inte finns i den nya versionen. Det finns tv\(oa grundl\(:aggande sk\(:al till detta; den f\(:orsta \(:ar att konffilen kan ha tappats av misstag och n\(:asta version kan komma att \(oaterst\(:alla den, varp\(oa anv\(:andaren inte vill tappa sina \(:andringar. Den andra \(:ar att f\(:or att g\(:ora det m\(:ojligt f\(:or paket att g\(oa \(:over fr\(oan en dpkg-hanterad konffil till en fil som hanteras av paketets skript, vanligtvis genom ett verktyg som debconf eller ucf. .PP Det inneb\(:ar att, om paketet menar att byta namn eller ta bort en konfigurationsfil, s\(oa m\(oaste det g\(:ora s\(oa explicit, och d\(oa kan \fBdpkg-maintscript-helper\fR anv\(:andas f\(:or att implementera en elegant borttagning och flyttning av konffiler i paketscripten. .SS "Ta bort en konffil" .IX Subsection "Ta bort en konffil" \&\fBObservera\fR: Det h\(:ar kan i de flesta fall ers\(:attas av flaggan \f(CW\*(C`remove\-on\-upgrade\*(C'\fR i \fIDEBIAN/conffiles\fR (sedan dpkg 1.20.6), se \fBdeb\-conffiles\fR\|(5). .PP If a conffile is completely removed, it should be removed from disk, unless the user has modified it. If there are local modifications, they should be preserved. If the package upgrade aborts, the newly obsolete conffile should not disappear. .PP Allt detta implementeras genom att l\(:agga in f\(:oljande skalkod i paketskripten \fBpreinst\fR, \fBpostinst\fR och \fBpostrm\fR: .Sp .RS 4 dpkg-maintscript-helper rm_conffile \e \fIkonffil\fR \fItidigare-version\fR \fIpaket\fR \-\- "$@" .RE .PP \&\fIkonffil\fR \(:ar namnet p\(oa konffilen som ska tas bort. .PP Aktuell implementation: i \fBpreinst\fR kontrolleras om konffilen \(:andrades och i s\(oa fall byts namnet p\(oa den till antingen \fIkonffil\fR\fB.dpkg\-remove\fR (om inte modifierad) eller till \fIkonffil\fR\fB.dpkg\-backup\fR (om modifierad). I \fBpostinst\fR byts namnet p\(oa den sistn\(:amnda filen till \fIkonffil\fR\fB.dpkg\-bak\fR och beh\(oalls som referens om den inneh\(oaller \(:andringar av anv\(:andaren, medan den tidigare kommer att tas bort. Om paketuppgraderingen avbryts kommer \fBpostrm\fR att ominstallera den ursprungliga konffilen. Vid borttagning kommer \fBpostrm\fR \(:aven att ta bort \fB.dpkg\-bak\fR\-filen som beh\(oallits fram till dess. .SS "Byta namn p\(oa en konffil" .IX Subsection "Byta namn p\(oa en konffil" Om en konffil flyttas fr\(oan en plats till en annan m\(oaste du se till att du flyttar med eventuella \(:andringar gjorda av anv\(:andaren. Detta kan f\(:orst verka vara en enkel \(:andring av \fBpreinst\fR\-skriptet, men det kommer leda till att anv\(:andaren ombeds att godk\(:anna \(:andringar i konffilen f\(:or \fBdpkg\fR, \(:aven om denne inte \(:ar ansvarig f\(:or dem. .PP En elegant namn\(:andring kan implementeras genom att l\(:agga in f\(:oljande skalkod i paketskripten \fBpreinst\fR, \fBpostinst\fR och \fBpostrm\fR: .Sp .RS 4 dpkg-maintscript-helper mv_conffile \e \fIgammal-konffil\fR \fIny-konffil\fR \fItidigare-version\fR \fIpaket\fR \-\- "$@" .RE .PP \&\fIgammalkonffil\fR och \fInykonffil\fR \(:ar de gamla och nya namnen p\(oa konffilen vars namn ska bytas. .PP Aktuell implementation: I \fBpreinst\fR kontrolleras om konffilen har \(:andrats, om ja l\(:amnas den kvar p\(oa plats, annars byts namnet p\(oa den till \fIgammalkonffil\fR\fB.dpkg\-remove\fR. Vid konfigurering tar \fBpostinst\fR bort \fIgammalkonffil\fR\fB.dpkg\-remove\fR och byter namn p\(oa \fIgammalkonffil\fR till \fInykonffil\fR om \fIgammalkonffil\fR fortfarande finns. Vid avbruten uppgradering eller installation byter \fBpostrm\fR tillbaka namnet fr\(oan \fIgammalkonffil\fR\fB.dpkg\-remove\fR till \fIgammalkonffil\fR om s\(oa beh\(:ovs. .SH "V\(:AXLING MELLAN SYML\(:ANKAR OCH KATALOGER" .IX Header "V\(:AXLING MELLAN SYML\(:ANKAR OCH KATALOGER" Vid uppgradering av ett paket kommer \fBdpkg\fR inte att automatiskt byta ut en symbolisk l\(:ank mot en katalog, eller omv\(:ant. Nedgraderingar st\(:ods inte och s\(:okv\(:agen kommer l\(:amnas som den var. .PP \&\fBObservera\fR: De symboliska l\(:ankar och kataloger som skapas vid dessa v\(:axlingar m\(oaste s\(:andas med i de nya paketen, om inte kommer \fBdpkg\fR inte att kunna ta bort dem vid en rensning. .SS "Byta en symbolisk l\(:ank mot en katalog" .IX Subsection "Byta en symbolisk l\(:ank mot en katalog" Om en symbolisk l\(:ank byts mot en riktig katalog m\(oaste du se till att den symboliska l\(:anken tas bort innan uppackningen. Detta kan f\(:orst verka vara en enkel \(:andring av \fBpreinst\fR\-skriptet, men det kommer leda till vissa problem om den lokale administrat\(:oren har justerat den symboliska l\(:anken, eller om paketet ska nedgraderas. .PP En elegant namn\(:andring kan implementeras genom att l\(:agga in f\(:oljande skalkod i paketskripten \fBpreinst\fR, \fBpostinst\fR och \fBpostrm\fR: .Sp .RS 4 dpkg-maintscript-helper symlink_to_dir \e \fIs\(:okv\(:agsnamn\fR \fIgammalt\-m\(oal\fR \fItidigare-version\fR \fIpaket\fR \-\- "$@" .RE .PP \&\fIs\(:okv\(:ag\fR \(:ar den absoluta s\(:okv\(:agen f\(:or den gamla symboliska l\(:anken (s\(:okv\(:agen kommer vara en katalog n\(:ar installationen \(:ar f\(:ardig) och \fIgammalt\-m\(oal\fR \(:ar m\(oalet p\(oa den tidigare symboliska l\(:anken i \fIs\(:okv\(:ag\fR. Den kan antingen vara absolut eller relativ till katalogen som inneh\(oaller \fIs\(:okv\(:ag\fR. .PP Aktuell implementation: I \fBpreinst\fR kontrolleras om den symboliska l\(:anken finns och pekar p\(oa \fIgammalt\-m\(oal\fR, om inte l\(:amnas den kvar, i annat fall byts namnet ut mot \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR. Vid konfigurering tar \fBpostinst\fR bort \fIs\(:okv\(:ag\fR\fB.dpkg\-bakcup\fR om \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR fortfarande \(:ar en symbolisk l\(:ank. Vid avbruten uppgradering eller installation byter \fBpostrm\fR tillbaka namnet fr\(oan \fIs\(:okv\(:ag\fR\fB.dpkg\-bakcup\fR till \fIs\(:okv\(:ag\fR om s\(oa beh\(:ovs. .SS "Byta en symbolisk l\(:ank mot en katalog" .IX Subsection "Byta en symbolisk l\(:ank mot en katalog" Om en riktig katalog byts mot en symbolisk l\(:ank m\(oaste du se till att katalogen tas bort innan uppackningen. Detta kan f\(:orst verka vara en enkel \(:andring av \fBpreinst\fR\-skriptet, men det kommer leda till vissa problem om katalogen inneh\(oaller konffiler, s\(:okv\(:agar som \(:ags av andra paket, lokalt skapade s\(:okv\(:agar, eller om paketet ska nedgraderas. .PP Ett elegant byte kan implementeras genom att l\(:agga in f\(:oljande skalkod i paketskripten \fBpreinst\fR, \fBpostinst\fR och \fBpostrm\fR: .Sp .RS 4 dpkg-maintscript-helper dir_to_symlink \e \fIs\(:okv\(:agsnamn\fR \fInytt-target\fR \fItidigare-version\fR \fIpaket\fR \-\- "$@" .RE .PP \&\fIs\(:okv\(:ag\fR \(:ar det absoluta namnet p\(oa den gamla katalogen (s\(:okv\(:agen kommer vara en symbolisk l\(:ank n\(:ar installationen \(:ar f\(:ardig) och \fInytt\-m\(oal\fR \(:ar m\(oalet p\(oa den nya symboliska l\(:anken i \fIs\(:okv\(:ag\fR. Den kan antingen vara absolut eller relativ till katalogen som inneh\(oaller \fIs\(:okv\(:ag\fR. .PP Aktuell implementation: I \fBpreinst\fR kontrolleras om katalogen finns, inte inneh\(oaller konffiler, s\(:okv\(:agar som \(:ags av andra paket, eller lokalt skapade s\(:okv\(:agar, om inte s\(oa kommer den l\(:amnas kvar, annars byts namnet ut mot \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR och en tom samlingsplatskatalog skapas i \fIs\(:okv\(:ag\fR, markerad med en fil s\(oa att dpkg kan h\(oalla ordning p\(oa den. Vid konfigurering slutf\(:or \fBpostinst\fR v\(:axlingen om \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR fortfarande \(:ar en katalog och \fIs\(:okv\(:ag\fR \(:ar samlingsplatskatalogen; den tar bort m\(:arkningsfilen, flyttar nyligen skapade filer inuti samlingskatalogen till m\(oalet f\(:or den symboliska l\(:anken \fInytt\-m\(oal\fR/, ers\(:atter den nu tomma samlingskatalogen \fIs\(:okv\(:ag\fR med en symbolisk l\(:ank till \fInytt\-m\(oal\fR och tar bort \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR. Vid avbruten uppgradering eller installation byter \fBpostrm\fR tillbaka namnet fr\(oan \fIs\(:okv\(:ag\fR\fB.dpkg\-backup\fR till \fIs\(:okv\(:ag\fR om s\(oa beh\(:ovs. .SH "INTEGRERA I PAKET" .IX Header "INTEGRERA I PAKET" N\(:ar ett paketeringshj\(:alpprogram anv\(:ands, kontrollera att det har direkt integrering med \fBdpkg-maintscript-helper\fR, n\(oagot som kan g\(:ora ditt liv enklare. Se till exempel \fBdh_installdeb\fR\|(1). .PP Givet att \fBdpkg-maintscript-helper\fR anv\(:ands i \fBpreinst\fR s\(oa inneb\(:ar detta villkorsl\(:ost att ett f\(:orhandsberoende (\(rqpre\-dependency\(rq) kr\(:avs f\(:or att f\(:ors\(:akra att den n\(:odv\(:andiga versionen av \fBdpkg\fR redan har packats upp. Den version som kr\(:avs beror p\(oa vilket kommando som anv\(:ands, f\(:or \fBrm_conffile\fR och \fBmv_conffile\fR \(:ar det 1.15.7.2, f\(:or \fBsymlink_to_dir\fR och \fBdir_to_symlnk\fR \(:ar det 1.17.14: .Sp .Vb 1 \& Pre\-Depends: dpkg (>= 1.17.14) .Ve .PP Men i m\(oanga fall \(:ar operationen som utf\(:ors av programmet inte kritiskt f\(:or paketet, och ist\(:allet f\(:or att anv\(:anda ett f\(:orhandsberoende kan vi anropa programmet endast om vi vet att det n\(:odv\(:andiga kommandot st\(:ods av den nu installerade \fBdpkg\fR: .Sp .RS 4 if dpkg-maintscript-helper supports \fIkommando\fR; then dpkg-maintscript-helper \fIkommando\fR ... fi .RE .PP Kommandot \fBsupports\fR returnerar 0 vid framg\(oang, annars 1. Kommandot \fBsupports\fR kontrollerar om milj\(:ovariablerna som s\(:atts av dpkg och som kr\(:avs av skriptet \(:ar n\(:arvarande, och kommer anse det som ett fel om milj\(:ovariablerna inte \(:ar tillr\(:ackliga. .SH MILJ\(:OVARIABLER .IX Header "MILJ\(:OVARIABLER" .IP \fBDPKG_ROOT\fR 4 .IX Item "DPKG_ROOT" Om satt kommer det anv\(:andar som filsystemets rotkatalog. .IP \fBDPKG_ADMINDIR\fR 4 .IX Item "DPKG_ADMINDIR" Omm satt kommer det anv\(:andas som \fBdpkg\fR:s datakatalog. .IP \fBDPKG_COLORS\fR 4 .IX Item "DPKG_COLORS" V\(:aljer f\(:argl\(:age (sedan dpkg 1.19.1). F\(:or n\(:arvarande godtas f\(:oljande v\(:arden: \fBauto\fR (f\(:orval), \fBalways\fR och \fBnever\fR. .SH "SE \(:AVEN" .IX Header "SE \(:AVEN" \&\fBdh_installdeb\fR\|(1). .SH \(:OVERS\(:ATTNING .IX Header "\(:OVERS\(:ATTNING" Peter Krefting och Daniel Nylander.