man-pages/sv/man1/dpkg-maintscript-helper.1.html
2021-03-31 01:06:50 +01:00

332 lines
16 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of dpkg-maintscript-helper</TITLE>
</HEAD><BODY>
<H1>dpkg-maintscript-helper</H1>
Section: Dpkg-sviten (1)<BR>Updated: 2020-03-23<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAMN</H2>
dpkg-maintscript-helper - g&aring;r runt k&auml;nda dpkg-begr&auml;nsningar i paketskript
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPS</H2>
<B>dpkg-maintscript-helper</B> <I>kommando</I> [<I>flagga</I>...] <B>--</B>
<I>maint-script-flagga</I>...
<A NAME="lbAD">&nbsp;</A>
<H2>KOMMANDON OCH PARAMETRAR</H2>
<P>
<B>supports</B> <I>kommando</I>
<P>
<B>rm_conffile</B> <I>konffil</I> [<I>tidigare-version</I> [<I>paket</I>]]
<P>
<B>mv_conffile</B> <I>gammalkonffil</I> <I>nykonffil</I> [<I>tidigare-version</I>
[<I>paket</I>]]
<P>
<B>symlink_to_dir</B> <I>s&ouml;kv&auml;g</I> <I>gammalt-m&aring;l</I> [<I>tidigare-version</I> [<I>paket</I>]]
<P>
<B>dir_to_symlink</B> <I>s&ouml;kv&auml;g</I> <I>nytt-m&aring;l</I> [<I>tidigare-version</I> [<I>paket</I>]]
<A NAME="lbAE">&nbsp;</A>
<H2>BESKRIVNING</H2>
<P>
Programmet skrevs f&ouml;r att k&ouml;ras i paketskript f&ouml;r att utf&ouml;ra en del &aring;tg&auml;rder
som <B>dpkg</B> (&auml;nnu) inte sj&auml;lv kan hantera, antingen p&aring; grund av designval
eller p&aring; grund av nuvarande begr&auml;nsningar.
<P>
M&aring;nga av dessa &aring;tg&auml;rder kr&auml;ver samordnade &aring;tg&auml;rder fr&aring;n flera paketskript
(<B>preint</B>, <B>postinst</B>, <B>prerm</B>, <B>postrm</B>). F&ouml;r att undvika misstag
r&auml;cker det att l&auml;gga in ett och samma anrop i alla skript, varp&aring; programmet
anpassar sitt beteende beroende p&aring; milj&ouml;variabeln <B>DPKG_MAINTSCRIPT_NAME</B>
och p&aring; paketskriptets parametrar, vilka du m&aring;ste vidares&auml;nda efter dubbla
bindestreck.
<A NAME="lbAF">&nbsp;</A>
<H2>DELADE PARAMETRAR</H2>
<DL COMPACT>
<DT id="1"><I>tidigare-version</I><DD>
Anger den senaste version av paketet vars uppgradering skall orsaka
h&auml;ndelsen. Det &auml;r viktigt att ber&auml;kna <I>tidigare-version</I> korrekt s&aring; att
operationerna utf&ouml;rs korrekt &auml;ven om anv&auml;ndaren byggt om paketet med en
lokal version. Om <I>tidigare-version</I> &auml;r tom eller utel&auml;mnas f&ouml;rs&ouml;ks
operationen vid varje uppgradering (notera: det &auml;r s&auml;krare att ange
versionen och endast f&ouml;rs&ouml;ka utf&ouml;ra operationen en g&aring;ng).
<P>
Om konffilen inte har s&auml;nts med i flera versioner och du nu uppdaterar
utvecklarskripten till att st&auml;da bort den gamla filen b&ouml;r
<I>tidigare-version</I> baseras p&aring; den version av paketet du nu f&ouml;rbereder, inte
den f&ouml;rsta version av paketet som saknade konffilen. Detta g&auml;ller p&aring; samma
s&auml;tt f&ouml;r alla andra &aring;tg&auml;rder.
<P>
Som ett exempel, f&ouml;r en konffil som togs bort i version <B>2.0-1</B> av ett
paket b&ouml;r <I>tidigareversion</I> s&auml;ttas till <B>2.0-1~</B>. Detta f&aring;r konffilen att
tas bort &auml;ven om anv&auml;ndaren bygger om den tidigare versionen <B>1.0-1</B> som
<B>1.0-1local1</B>. Eller ett paket som bytt en s&ouml;kv&auml;g fr&aring;n att vara en
symbolisk l&auml;nk (skeppad i version <B>1.0-1</B>) till en katalog (skeppad i
version <B>2.0-1</B>), men bara utf&ouml;rt sj&auml;lva &auml;ndringen i utvecklarskripten i
version <B>3.0-1</B>, b&ouml;r s&auml;tta <I>tidigareversion</I> till <B>3.0-1~</B>.
<DT id="2"><I>paket</I><DD>
The package name owning the pathname(s). When the package is "Multi-Arch:
same" this parameter must include the architecture qualifier, otherwise it
should <B>not</B> usually include the architecture qualifier (as it would
disallow cross-grades, or switching from being architecture specific to
architecture <B>all</B> or vice versa). If the parameter is empty or omitted,
the <B>DPKG_MAINTSCRIPT_PACKAGE</B> and <B>DPKG_MAINTSCRIPT_ARCH</B> environment
variables (as set by <B>dpkg</B> when running the maintainer scripts) will be
used to generate an arch-qualified package name.
<DT id="3"><B>--</B><DD>
Alla parametrar till utvecklarskripten m&aring;ste vidares&auml;ndas till programmen
efter <B>--</B>.
</DL>
<A NAME="lbAG">&nbsp;</A>
<H2>KONFFIL-RELATERADE &Aring;TG&Auml;RDER</H2>
<P>
N&auml;r ett paket uppgraderas kommer <B>dpkg</B> inte att automatiskt ta bort en
konffil (en konfigurationsfil f&ouml;r vilken <B>dpkg</B> skall beh&aring;lla anv&auml;ndarens
&auml;ndringar) om den inte finns i den nya versionen. Det finns tv&aring;
grundl&auml;ggande sk&auml;l till detta; den f&ouml;rsta &auml;r att konffilen kan ha tappats av
misstag och n&auml;sta version kan komma att &aring;terst&auml;lla den, varp&aring; anv&auml;ndaren
inte vill tappa sina &auml;ndringar. Den andra &auml;r att f&ouml;r att g&ouml;ra det m&ouml;jligt
f&ouml;r paket att g&aring; &ouml;ver fr&aring;n en dpkg-hanterad konffil till en fil som hanteras
av paketets skript, vanligtvis genom ett verktyg som debconf eller ucf.
<P>
Det inneb&auml;r att, om paketet menar att byta namn eller ta bort en
konfigurationsfil, s&aring; m&aring;ste det g&ouml;ra s&aring; explicit, och d&aring; kan
<B>dpkg-maintscript-helper</B> anv&auml;ndas f&ouml;r att implementera en elegant
borttagning och flyttning av konffiler i paketscripten.
<A NAME="lbAH">&nbsp;</A>
<H3>Ta bort en konffil</H3>
<P>
Om en konffil helt tas bort b&ouml;r den tas bort fr&aring;n disk, s&aring;vida inte
anv&auml;ndaren har modifierat den. Om det finns lokala &auml;ndringar b&ouml;r de
bibeh&aring;llas. Om paketuppgraderingen avbryts b&ouml;r inte konffilen som just blev
f&ouml;r&aring;ldras f&ouml;rsvinna.
<P>
Allt detta implementeras genom att l&auml;gga in f&ouml;ljande skalkod i paketskripten
<B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;rm_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>konffil</I>&nbsp;<I>tidigare-version</I>&nbsp;<I>paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>konffil</I> &auml;r namnet p&aring; konffilen som skall tas bort.
<P>
Aktuell implementation: i <B>preinst</B> kontrolleras om konffilen &auml;ndrades och
i s&aring; fall byts namnet p&aring; den till antingen <I>konffil</I><B>.dpkg-remove</B> (om
inte modifierad) eller till <I>konffil</I><B>.dpkg-backup</B> (om modifierad). I
<B>postinst</B> byts namnet p&aring; den sistn&auml;mnda filen till <I>konffil</I><B>.dpkg-bak</B>
och beh&aring;lls som referens om den inneh&aring;ller &auml;ndringar av anv&auml;ndaren, medan
den tidigare kommer att tas bort. Om paketuppgraderingen avbryts kommer
<B>postrm</B> att ominstallera den ursprungliga konffilen. Vid borttagning
kommer <B>postrm</B> &auml;ven att ta bort <B>.dpkg-bak</B>-filen som beh&aring;llits fram till
dess.
<A NAME="lbAI">&nbsp;</A>
<H3>Byta namn p&aring; en konffil</H3>
<P>
Om en konffil flyttas fr&aring;n en plats till en annan m&aring;ste du se till att du
flyttar med eventuella &auml;ndringar gjorda av anv&auml;ndaren. Detta kan f&ouml;rst verka
vara en enkel &auml;ndring av <B>preinst</B>-skriptet, men det kommer leda till att
anv&auml;ndaren ombeds att godk&auml;nna &auml;ndringar i konffilen f&ouml;r <B>dpkg</B>, &auml;ven om
denne inte &auml;r ansvarig f&ouml;r dem.
<P>
En elegant namn&auml;ndring kan implementeras genom att l&auml;gga in f&ouml;ljande skalkod
i paketskripten <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;mv_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>gammalkonffil</I>&nbsp;<I>nykonffil</I>&nbsp;<I>tidigare-version</I>&nbsp;<I>paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>gammalkonffil</I> och <I>nykonffil</I> &auml;r de gamla och nya namnen p&aring; konffilen
vars namn skall bytas.
<P>
Aktuell implementation: I <B>preinst</B> kontrolleras om konffilen har &auml;ndrats,
om ja l&auml;mnas den kvar p&aring; plats, annars byts namnet p&aring; den till
<I>gammalkonffil</I><B>.dpkg-remove</B>. Vid konfigurering tar <B>postinst</B> bort
<I>gammalkonffil</I><B>.dpkg-remove</B> och byter namn p&aring; <I>gammalkonffil</I> till
<I>nykonffil</I> om <I>gammalkonffil</I> fortfarande finns. Vid avbruten
uppgradering eller installation byter <B>postrm</B> tillbaka namnet fr&aring;n
<I>gammalkonffil</I><B>.dpkg-remove</B> till <I>gammalkonffil</I> om s&aring; beh&ouml;vs.
<A NAME="lbAJ">&nbsp;</A>
<H2>V&Auml;XLING MELLAN SYML&Auml;NKAR OCH KATALOGER</H2>
Vid uppgradering av ett paket kommer <B>dpkg</B> inte att automatiskt byta ut en
symbolisk l&auml;nk mot en katalog, eller omv&auml;nt. Nedgraderingar st&ouml;ds inte och
s&ouml;kv&auml;gen kommer l&auml;mnas som den var.
<A NAME="lbAK">&nbsp;</A>
<H3>Byta en symbolisk l&auml;nk mot en katalog</H3>
Om en symbolisk l&auml;nk byts mot en riktig katalog m&aring;ste du se till att den
symboliska l&auml;nken tas bort innan uppackningen. Detta kan f&ouml;rst verka vara en
enkel &auml;ndring av <B>preinst</B>-skriptet, men det kommer leda till vissa problem
om den lokale administrat&ouml;ren har justerat den symboliska l&auml;nken, eller om
paketet skall nedgraderas.
<P>
En elegant namn&auml;ndring kan implementeras genom att l&auml;gga in f&ouml;ljande skalkod
i paketskripten <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;symlink_to_dir&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>s&ouml;kv&auml;g</I>&nbsp;<I>gammalt-m&aring;l</I>&nbsp;<I>tidigare-version</I>&nbsp;<I>paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>s&ouml;kv&auml;g</I> &auml;r den absoluta s&ouml;kv&auml;gen f&ouml;r den gamla symboliska l&auml;nken (s&ouml;kv&auml;gen
kommer vara en katalog n&auml;r installationen &auml;r f&auml;rdig) och <I>gammalt-m&aring;l</I> &auml;r
m&aring;let p&aring; den tidigare symboliska l&auml;nken i <I>s&ouml;kv&auml;g</I>. Den kan antingen vara
absolut eller relativ till katalogen som inneh&aring;ller <I>s&ouml;kv&auml;g</I>.
<P>
Aktuell implementation: I <B>preinst</B> kontrolleras om den symboliska l&auml;nken
finns och pekar p&aring; <I>gammalt-m&aring;l</I>, om inte l&auml;mnas den kvar, i annat fall
byts namnet ut mot <I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B>. Vid konfigurering tar
<B>postinst</B> bort <I>s&ouml;kv&auml;g</I><B>.dpkg-bakcup</B> om <I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B>
fortfarande &auml;r en symbolisk l&auml;nk. Vid avbruten uppgradering eller
installation byter <B>postrm</B> tillbaka namnet fr&aring;n <I>s&ouml;kv&auml;g</I><B>.dpkg-bakcup</B>
till <I>s&ouml;kv&auml;g</I> om s&aring; beh&ouml;vs.
<A NAME="lbAL">&nbsp;</A>
<H3>Byta en symbolisk l&auml;nk mot en katalog</H3>
Om en riktig katalog byts mot en symbolisk l&auml;nk m&aring;ste du se till att
katalogen tas bort innan uppackningen. Detta kan f&ouml;rst verka vara en enkel
&auml;ndring av <B>preinst</B>-skriptet, men det kommer leda till vissa problem om
katalogen inneh&aring;ller konffiler, s&ouml;kv&auml;gar som &auml;gs av andra paket, lokalt
skapade s&ouml;kv&auml;gar, eller om paketet skall nedgraderas.
<P>
Ett elegant byte kan implementeras genom att l&auml;gga in f&ouml;ljande skalkod i
paketskripten <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;dir_to_symlink&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>s&ouml;kv&auml;g</I>&nbsp;<I>nytt-m&aring;l</I>&nbsp;<I>tidigare-version</I>&nbsp;<I>paket</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>s&ouml;kv&auml;g</I> &auml;r det absoluta namnet p&aring; den gamla katalogen (s&ouml;kv&auml;gen kommer
vara en symbolisk l&auml;nk n&auml;r installationen &auml;r f&auml;rdig) och <I>nytt-m&aring;l</I> &auml;r
m&aring;let p&aring; den nya symboliska l&auml;nken i <I>s&ouml;kv&auml;g</I>. Den kan antingen vara
absolut eller relativ till katalogen som inneh&aring;ller <I>s&ouml;kv&auml;g</I>.
<P>
Aktuell implementation: I <B>preinst</B> kontrolleras om katalogen finns, inte
inneh&aring;ller konffiler, s&ouml;kv&auml;gar som &auml;gs av andra paket, eller lokalt skapade
s&ouml;kv&auml;gar, om inte s&aring; kommer den l&auml;mnas kvar, annars byts namnet ut mot
<I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B> och en tom samlingsplatskatalog skapas i <I>s&ouml;kv&auml;g</I>,
markerad med en fil s&aring; att dpkg kan h&aring;lla ordning p&aring; den. Vid konfigurering
slutf&ouml;r <B>postinst</B> v&auml;xlingen om <I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B> fortfarande &auml;r en
katalog och <I>s&ouml;kv&auml;g</I> &auml;r samlingsplatskatalogen; den tar bort
m&auml;rkningsfilen, flyttar nyligen skapade filer inuti samlingskatalogen till
m&aring;let f&ouml;r den symboliska l&auml;nken <I>nytt-m&aring;l</I>/, ers&auml;tter den nu tomma
samlingskatalogen <I>s&ouml;kv&auml;g</I> med en symbolisk l&auml;nk till <I>nytt-m&aring;l</I> och tar
bort <I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B>. Vid avbruten uppgradering eller installation
byter <B>postrm</B> tillbaka namnet fr&aring;n <I>s&ouml;kv&auml;g</I><B>.dpkg-backup</B> till <I>s&ouml;kv&auml;g</I>
om s&aring; beh&ouml;vs.
<A NAME="lbAM">&nbsp;</A>
<H2>INTEGRERA I PAKET</H2>
<P>
N&auml;r ett paketeringshj&auml;lpprogram anv&auml;nds, kontrollera att det har direkt
integrering med <B>dpkg-maintscript-helper</B>, n&aring;got som kan g&ouml;ra ditt liv
enklare. Se till exempel <B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
<P>
Givet att <B>dpkg-maintscript-helper</B> anv&auml;nds i <B>preinst</B> s&aring; inneb&auml;r detta
villkorsl&ouml;st att ett f&ouml;rhandsberoende (&quot;pre-dependency&quot;) kr&auml;vs f&ouml;r att
f&ouml;rs&auml;kra att den n&ouml;dv&auml;ndiga versionen av <B>dpkg</B> redan har packats upp. Den
version som kr&auml;vs beror p&aring; vilket kommando som anv&auml;nds, f&ouml;r <B>rm_conffile</B>
och <B>mv_conffile</B> &auml;r det 1.15.7.2, f&ouml;r <B>symlink_to_dir</B> och
<B>dir_to_symlnk</B> &auml;r det 1.17.14:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;<B>Pre-Depends:</B>&nbsp;dpkg&nbsp;(&gt;=&nbsp;1.17.14)
<P>
Men i m&aring;nga fall &auml;r operationen som utf&ouml;rs av programmet inte kritiskt f&ouml;r
paketet, och ist&auml;llet f&ouml;r att anv&auml;nda ett f&ouml;rhandsberoende kan vi anropa
programmet endast om vi vet att det n&ouml;dv&auml;ndiga kommandot st&ouml;ds av den nu
installerade <B>dpkg</B>:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;dpkg-maintscript-helper&nbsp;supports&nbsp;<I>kommando</I>;&nbsp;then
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;<I>kommando</I>&nbsp;...
<BR>&nbsp;&nbsp;&nbsp;&nbsp;fi
<P>
Kommandot <B>supports</B> returnerar 0 vid framg&aring;ng, annars 1. Kommandot
<B>supports</B> kontrollerar om milj&ouml;variablerna som s&auml;tts av dpkg och som kr&auml;vs
av skriptet &auml;r n&auml;rvarande, och kommer anse det som ett fel om
milj&ouml;variablerna inte &auml;r tillr&auml;ckliga.
<A NAME="lbAN">&nbsp;</A>
<H2>MILJ&Ouml;VARIABLER</H2>
<DL COMPACT>
<DT id="4"><B>DPKG_COLORS</B><DD>
Sets the color mode (since dpkg 1.19.1). The currently accepted values are:
<B>auto</B> (default), <B>always</B> and <B>never</B>.
</DL>
<A NAME="lbAO">&nbsp;</A>
<H2>SE &Auml;VEN</H2>
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
<A NAME="lbAP">&nbsp;</A>
<H2>&Ouml;VERS&Auml;TTNING</H2>
Peter Krefting och Daniel Nylander.
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="5"><A HREF="#lbAB">NAMN</A><DD>
<DT id="6"><A HREF="#lbAC">SYNOPS</A><DD>
<DT id="7"><A HREF="#lbAD">KOMMANDON OCH PARAMETRAR</A><DD>
<DT id="8"><A HREF="#lbAE">BESKRIVNING</A><DD>
<DT id="9"><A HREF="#lbAF">DELADE PARAMETRAR</A><DD>
<DT id="10"><A HREF="#lbAG">KONFFIL-RELATERADE &Aring;TG&Auml;RDER</A><DD>
<DL>
<DT id="11"><A HREF="#lbAH">Ta bort en konffil</A><DD>
<DT id="12"><A HREF="#lbAI">Byta namn p&aring; en konffil</A><DD>
</DL>
<DT id="13"><A HREF="#lbAJ">V&Auml;XLING MELLAN SYML&Auml;NKAR OCH KATALOGER</A><DD>
<DL>
<DT id="14"><A HREF="#lbAK">Byta en symbolisk l&auml;nk mot en katalog</A><DD>
<DT id="15"><A HREF="#lbAL">Byta en symbolisk l&auml;nk mot en katalog</A><DD>
</DL>
<DT id="16"><A HREF="#lbAM">INTEGRERA I PAKET</A><DD>
<DT id="17"><A HREF="#lbAN">MILJ&Ouml;VARIABLER</A><DD>
<DT id="18"><A HREF="#lbAO">SE &Auml;VEN</A><DD>
<DT id="19"><A HREF="#lbAP">&Ouml;VERS&Auml;TTNING</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:06:23 GMT, March 31, 2021
</BODY>
</HTML>