332 lines
16 KiB
HTML
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"> </A>
|
|
<H2>NAMN</H2>
|
|
|
|
dpkg-maintscript-helper - går runt kända dpkg-begränsningar i paketskript
|
|
<A NAME="lbAC"> </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"> </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ökväg</I> <I>gammalt-mål</I> [<I>tidigare-version</I> [<I>paket</I>]]
|
|
<P>
|
|
|
|
<B>dir_to_symlink</B> <I>sökväg</I> <I>nytt-mål</I> [<I>tidigare-version</I> [<I>paket</I>]]
|
|
<A NAME="lbAE"> </A>
|
|
<H2>BESKRIVNING</H2>
|
|
|
|
<P>
|
|
|
|
Programmet skrevs för att köras i paketskript för att utföra en del åtgärder
|
|
som <B>dpkg</B> (ä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
|
|
(<B>preint</B>, <B>postinst</B>, <B>prerm</B>, <B>postrm</B>). 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 <B>DPKG_MAINTSCRIPT_NAME</B>
|
|
och på paketskriptets parametrar, vilka du måste vidaresända efter dubbla
|
|
bindestreck.
|
|
<A NAME="lbAF"> </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ändelsen. Det är viktigt att beräkna <I>tidigare-version</I> korrekt så att
|
|
operationerna utförs korrekt även om användaren byggt om paketet med en
|
|
lokal version. Om <I>tidigare-version</I> är tom eller utelämnas försöks
|
|
operationen vid varje uppgradering (notera: det är säkrare att ange
|
|
versionen och endast försöka utföra operationen en gång).
|
|
<P>
|
|
Om konffilen inte har sänts med i flera versioner och du nu uppdaterar
|
|
utvecklarskripten till att städa bort den gamla filen bör
|
|
<I>tidigare-version</I> baseras på den version av paketet du nu förbereder, inte
|
|
den första version av paketet som saknade konffilen. Detta gäller på samma
|
|
sätt för alla andra åtgärder.
|
|
<P>
|
|
Som ett exempel, för en konffil som togs bort i version <B>2.0-1</B> av ett
|
|
paket bör <I>tidigareversion</I> sättas till <B>2.0-1~</B>. Detta får konffilen att
|
|
tas bort även om användaren bygger om den tidigare versionen <B>1.0-1</B> som
|
|
<B>1.0-1local1</B>. Eller ett paket som bytt en sökväg från att vara en
|
|
symbolisk länk (skeppad i version <B>1.0-1</B>) till en katalog (skeppad i
|
|
version <B>2.0-1</B>), men bara utfört själva ändringen i utvecklarskripten i
|
|
version <B>3.0-1</B>, bör sä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åste vidaresändas till programmen
|
|
efter <B>--</B>.
|
|
</DL>
|
|
<A NAME="lbAG"> </A>
|
|
<H2>KONFFIL-RELATERADE ÅTGÄRDER</H2>
|
|
|
|
<P>
|
|
|
|
När ett paket uppgraderas kommer <B>dpkg</B> inte att automatiskt ta bort en
|
|
konffil (en konfigurationsfil för vilken <B>dpkg</B> 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
|
|
<B>dpkg-maintscript-helper</B> användas för att implementera en elegant
|
|
borttagning och flyttning av konffiler i paketscripten.
|
|
<A NAME="lbAH"> </A>
|
|
<H3>Ta bort en konffil</H3>
|
|
|
|
<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
|
|
<B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper rm_conffile \
|
|
<BR> <I>konffil</I> <I>tidigare-version</I> <I>paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>konffil</I> är namnet på konffilen som skall tas bort.
|
|
<P>
|
|
|
|
Aktuell implementation: i <B>preinst</B> kontrolleras om konffilen ändrades och
|
|
i så fall byts namnet på 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å den sistnämnda filen till <I>konffil</I><B>.dpkg-bak</B>
|
|
och behålls som referens om den innehåller ändringar av anvä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> även att ta bort <B>.dpkg-bak</B>-filen som behållits fram till
|
|
dess.
|
|
<A NAME="lbAI"> </A>
|
|
<H3>Byta namn på en konffil</H3>
|
|
|
|
<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 <B>preinst</B>-skriptet, men det kommer leda till att
|
|
användaren ombeds att godkänna ändringar i konffilen för <B>dpkg</B>, ä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 <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper mv_conffile \
|
|
<BR> <I>gammalkonffil</I> <I>nykonffil</I> <I>tidigare-version</I> <I>paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>gammalkonffil</I> och <I>nykonffil</I> är de gamla och nya namnen på konffilen
|
|
vars namn skall bytas.
|
|
<P>
|
|
|
|
Aktuell implementation: I <B>preinst</B> kontrolleras om konffilen har ändrats,
|
|
om ja lämnas den kvar på plats, annars byts namnet på 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å <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ån
|
|
<I>gammalkonffil</I><B>.dpkg-remove</B> till <I>gammalkonffil</I> om så behövs.
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>VÄXLING MELLAN SYMLÄNKAR OCH KATALOGER</H2>
|
|
|
|
Vid uppgradering av ett paket kommer <B>dpkg</B> inte att automatiskt byta ut en
|
|
symbolisk länk mot en katalog, eller omvänt. Nedgraderingar stöds inte och
|
|
sökvägen kommer lämnas som den var.
|
|
<A NAME="lbAK"> </A>
|
|
<H3>Byta en symbolisk länk mot en katalog</H3>
|
|
|
|
Om en symbolisk länk byts mot en riktig katalog måste du se till att den
|
|
symboliska länken tas bort innan uppackningen. Detta kan först verka vara en
|
|
enkel ändring av <B>preinst</B>-skriptet, men det kommer leda till vissa problem
|
|
om den lokale administratören har justerat den symboliska länken, eller om
|
|
paketet skall nedgraderas.
|
|
<P>
|
|
|
|
En elegant namnändring kan implementeras genom att lägga in följande skalkod
|
|
i paketskripten <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper symlink_to_dir \
|
|
<BR> <I>sökväg</I> <I>gammalt-mål</I> <I>tidigare-version</I> <I>paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>sökväg</I> är den absoluta sökvägen för den gamla symboliska länken (sökvägen
|
|
kommer vara en katalog när installationen är färdig) och <I>gammalt-mål</I> är
|
|
målet på den tidigare symboliska länken i <I>sökväg</I>. Den kan antingen vara
|
|
absolut eller relativ till katalogen som innehåller <I>sökväg</I>.
|
|
<P>
|
|
|
|
Aktuell implementation: I <B>preinst</B> kontrolleras om den symboliska länken
|
|
finns och pekar på <I>gammalt-mål</I>, om inte lämnas den kvar, i annat fall
|
|
byts namnet ut mot <I>sökväg</I><B>.dpkg-backup</B>. Vid konfigurering tar
|
|
<B>postinst</B> bort <I>sökväg</I><B>.dpkg-bakcup</B> om <I>sökväg</I><B>.dpkg-backup</B>
|
|
fortfarande är en symbolisk länk. Vid avbruten uppgradering eller
|
|
installation byter <B>postrm</B> tillbaka namnet från <I>sökväg</I><B>.dpkg-bakcup</B>
|
|
till <I>sökväg</I> om så behövs.
|
|
<A NAME="lbAL"> </A>
|
|
<H3>Byta en symbolisk länk mot en katalog</H3>
|
|
|
|
Om en riktig katalog byts mot en symbolisk länk måste du se till att
|
|
katalogen tas bort innan uppackningen. Detta kan först verka vara en enkel
|
|
ändring av <B>preinst</B>-skriptet, men det kommer leda till vissa problem om
|
|
katalogen innehåller konffiler, sökvägar som ägs av andra paket, lokalt
|
|
skapade sökvägar, eller om paketet skall nedgraderas.
|
|
<P>
|
|
|
|
Ett elegant byte kan implementeras genom att lägga in följande skalkod i
|
|
paketskripten <B>preinst</B>, <B>postinst</B> och <B>postrm</B>:
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper dir_to_symlink \
|
|
<BR> <I>sökväg</I> <I>nytt-mål</I> <I>tidigare-version</I> <I>paket</I> -- "$@"
|
|
<P>
|
|
|
|
<I>sökväg</I> är det absoluta namnet på den gamla katalogen (sökvägen kommer
|
|
vara en symbolisk länk när installationen är färdig) och <I>nytt-mål</I> är
|
|
målet på den nya symboliska länken i <I>sökväg</I>. Den kan antingen vara
|
|
absolut eller relativ till katalogen som innehåller <I>sökväg</I>.
|
|
<P>
|
|
|
|
Aktuell implementation: I <B>preinst</B> kontrolleras om katalogen finns, inte
|
|
innehåller konffiler, sökvägar som ägs av andra paket, eller lokalt skapade
|
|
sökvägar, om inte så kommer den lämnas kvar, annars byts namnet ut mot
|
|
<I>sökväg</I><B>.dpkg-backup</B> och en tom samlingsplatskatalog skapas i <I>sökväg</I>,
|
|
markerad med en fil så att dpkg kan hålla ordning på den. Vid konfigurering
|
|
slutför <B>postinst</B> växlingen om <I>sökväg</I><B>.dpkg-backup</B> fortfarande är en
|
|
katalog och <I>sökväg</I> är samlingsplatskatalogen; den tar bort
|
|
märkningsfilen, flyttar nyligen skapade filer inuti samlingskatalogen till
|
|
målet för den symboliska länken <I>nytt-mål</I>/, ersätter den nu tomma
|
|
samlingskatalogen <I>sökväg</I> med en symbolisk länk till <I>nytt-mål</I> och tar
|
|
bort <I>sökväg</I><B>.dpkg-backup</B>. Vid avbruten uppgradering eller installation
|
|
byter <B>postrm</B> tillbaka namnet från <I>sökväg</I><B>.dpkg-backup</B> till <I>sökväg</I>
|
|
om så behövs.
|
|
<A NAME="lbAM"> </A>
|
|
<H2>INTEGRERA I PAKET</H2>
|
|
|
|
<P>
|
|
|
|
När ett paketeringshjälpprogram används, kontrollera att det har direkt
|
|
integrering med <B>dpkg-maintscript-helper</B>, något som kan gö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änds i <B>preinst</B> 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 <B>dpkg</B> redan har packats upp. Den
|
|
version som krävs beror på vilket kommando som används, för <B>rm_conffile</B>
|
|
och <B>mv_conffile</B> är det 1.15.7.2, för <B>symlink_to_dir</B> och
|
|
<B>dir_to_symlnk</B> är det 1.17.14:
|
|
<P>
|
|
|
|
<BR> <B>Pre-Depends:</B> dpkg (>= 1.17.14)
|
|
<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 <B>dpkg</B>:
|
|
<P>
|
|
|
|
<BR> if dpkg-maintscript-helper supports <I>kommando</I>; then
|
|
<BR> dpkg-maintscript-helper <I>kommando</I> ...
|
|
<BR> fi
|
|
<P>
|
|
|
|
Kommandot <B>supports</B> returnerar 0 vid framgång, annars 1. Kommandot
|
|
<B>supports</B> kontrollerar om miljövariablerna som sätts av dpkg och som krävs
|
|
av skriptet är närvarande, och kommer anse det som ett fel om
|
|
miljövariablerna inte är tillräckliga.
|
|
<A NAME="lbAN"> </A>
|
|
<H2>MILJÖ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"> </A>
|
|
<H2>SE ÄVEN</H2>
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<A NAME="lbAP"> </A>
|
|
<H2>ÖVERSÄTTNING</H2>
|
|
|
|
Peter Krefting och Daniel Nylander.
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </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 ÅTGÄ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å en konffil</A><DD>
|
|
</DL>
|
|
<DT id="13"><A HREF="#lbAJ">VÄXLING MELLAN SYMLÄNKAR OCH KATALOGER</A><DD>
|
|
<DL>
|
|
<DT id="14"><A HREF="#lbAK">Byta en symbolisk länk mot en katalog</A><DD>
|
|
<DT id="15"><A HREF="#lbAL">Byta en symbolisk lä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ÖVARIABLER</A><DD>
|
|
<DT id="18"><A HREF="#lbAO">SE ÄVEN</A><DD>
|
|
<DT id="19"><A HREF="#lbAP">ÖVERSÄ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>
|