Man page - dpkg-maintscript-helper(1)

Packages contains this manual

Available languages:

en fr pt nl sv de

Manual

dpkg-maintscript-helper

NAMN
SYNOPS
KOMMANDON OCH PARAMETRAR
BESKRIVNING
DELADE PARAMETRAR
KONFFIL-RELATERADE ÅTGÄRDER
Ta bort en konffil
Byta namn pÄ en konffil
VÄXLING MELLAN SYMLÄNKAR OCH KATALOGER
Byta en symbolisk lÀnk mot en katalog
Byta en symbolisk lÀnk mot en katalog
INTEGRERA I PAKET
MILJÖVARIABLER
SE ÄVEN
ÖVERSÄTTNING

NAMN

dpkg-maintscript-helper - gÄr runt kÀnda dpkg-begrÀnsningar i paketskript

SYNOPS

dpkg-maintscript-helper kommando [ flagga ...] -- maint-script-flagga ...

KOMMANDON OCH PARAMETRAR

supports kommando
rm_conffile
konffil [ tidigare-version [ paket ]]
mv_conffile
gammalkonffil nykonffil [ tidigare-version [ paket ]]
symlink_to_dir
sökvÀg gammalt-mÄl [ tidigare-version [ paket ]]
dir_to_symlink
sökvÀg nytt-mÄl [ tidigare-version [ paket ]]

BESKRIVNING

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.

MÄnga av dessa ÄtgÀrder krÀver samordnade ÄtgÀrder frÄn flera paketskript ( preint , postinst , prerm , postrm ). 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 DPKG_MAINTSCRIPT_NAME och pÄ paketskriptets parametrar, vilka du mÄste vidaresÀnda efter dubbla bindestreck.

Kommandot introducerades i dpkg 1.15.7..

DELADE PARAMETRAR

tidigare-version

Anger den senaste version av paketet vars uppgradering ska orsaka hÀndelsen. Det Àr viktigt att berÀkna tidigare-version korrekt sÄ att operationerna utförs korrekt Àven om anvÀndaren byggt om paketet med en lokal version. Om tidigare-version À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).

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 tidigare-version 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.

Som ett exempel, för en konffil som togs bort i version 2.0-1 av ett paket bör tidigareversion sĂ€ttas till 2.0-1˜ . Detta fĂ„r konffilen att tas bort Ă€ven om anvĂ€ndaren bygger om den tidigare versionen 1.0-1 som 1.0-1local1 . Eller ett paket som bytt en sökvĂ€g frĂ„n att vara en symbolisk lĂ€nk (skeppad i version 1.0-1 ) till en katalog (skeppad i version 2.0-1 ), men bara utfört sjĂ€lva Ă€ndringen i utvecklarskripten i version 3.0-1 , bör sĂ€tta tidigareversion till 3.0-1˜ .

paket

Paketnamnet som Ă€ger sökvĂ€gsnamnet/-en. NĂ€r paketet Ă€r ”Multi-Arch: same” mĂ„ste parametern innehĂ„lla arkitekturkvalificeraren, i andra fall bör den inte innehĂ„lla arkitekturkvalificeraren (eftersom det skulle hindra korsgraderingar, eller byte frĂ„n att vara arkitekturspecifikt till all -arkitektur eller vice veras). Om parametern Ă€r tom eller inte anges, kommer miljövariablerna DPKG_MAINTSCRIPT_PACKAGE och DPKG_MAINTSCRIPT_ARCH (som satta av dpkg nĂ€r utvecklarskripten körs) att anvĂ€ndas för att skapa ett arkitekturkvalificerat paketnamn.

--

Alla parametrar till utvecklarskripten mÄste vidaresÀndas till programmen efter -- .

KONFFIL-RELATERADE ÅTGÄRDER

NÀr ett paket uppgraderas kommer dpkg inte att automatiskt ta bort en konffil (en konfigurationsfil för vilken dpkg ska 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.

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 dpkg-maintscript-helper anvÀndas för att implementera en elegant borttagning och flyttning av konffiler i paketscripten.

Ta bort en konffil

Observera : Det hÀr kan i de flesta fall ersÀttas av flaggan "remove-on-upgrade" i DEBIAN/conffiles (sedan dpkg 1.20.6), se deb-conffiles (5).

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Äldrad försvinna.

Allt detta implementeras genom att lÀgga in följande skalkod i paketskripten preinst , postinst och postrm :

dpkg-maintscript-helper rm_conffile \
konffil tidigare-version paket
-- "$@"

konffil Àr namnet pÄ konffilen som ska tas bort.

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 sistnÀmnda filen till konffil .dpkg-bak och behÄlls som referens om den innehÄller Àndringar av anvÀndaren, 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 behÄllits fram till dess.

Byta namn pÄ en konffil

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 preinst -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.

En elegant namnÀndring kan implementeras genom att lÀgga in följande skalkod i paketskripten preinst , postinst och postrm :

dpkg-maintscript-helper mv_conffile \
gammal-konffil ny-konffil tidigare-version paket
-- "$@"

gammalkonffil och nykonffil Àr de gamla och nya namnen pÄ konffilen vars namn ska bytas.

Aktuell implementation: I preinst kontrolleras om konffilen har Àndrats, om ja lÀmnas 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 frÄn gammalkonffil .dpkg-remove till gammalkonffil om sÄ behövs.

VÄXLING MELLAN SYMLÄNKAR OCH KATALOGER

Vid uppgradering av ett paket kommer dpkg 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.

Observera : De symboliska lÀnkar och kataloger som skapas vid dessa vÀxlingar mÄste sÀndas med i de nya paketen, om inte kommer dpkg inte att kunna ta bort dem vid en rensning.

Byta en symbolisk lÀnk mot en katalog

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 preinst -skriptet, men det kommer leda till vissa problem om den lokale administratören har justerat den symboliska lÀnken, eller om paketet ska nedgraderas.

En elegant namnÀndring kan implementeras genom att lÀgga in följande skalkod i paketskripten preinst , postinst och postrm :

dpkg-maintscript-helper symlink_to_dir \
sökvÀgsnamn gammalt-mÄl tidigare-version paket
-- "$@"

sökvÀg À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 gammalt-mÄl Àr mÄlet pÄ den tidigare symboliska lÀnken i sökvÀg . Den kan antingen vara absolut eller relativ till katalogen som innehÄller sökvÀg .

Aktuell implementation: I preinst kontrolleras om den symboliska lÀnken finns och pekar pÄ gammalt-mÄl , om inte lÀmnas den kvar, i annat fall byts namnet ut mot sökvÀg .dpkg-backup . Vid konfigurering tar postinst bort sökvÀg .dpkg-bakcup om sökvÀg .dpkg-backup fortfarande Àr en symbolisk lÀnk. Vid avbruten uppgradering eller installation byter postrm tillbaka namnet frÄn sökvÀg .dpkg-bakcup till sökvÀg om sÄ behövs.

Byta en symbolisk lÀnk mot en katalog

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 preinst -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 ska nedgraderas.

Ett elegant byte kan implementeras genom att lÀgga in följande skalkod i paketskripten preinst , postinst och postrm :

dpkg-maintscript-helper dir_to_symlink \
sökvÀgsnamn nytt-target tidigare-version paket
-- "$@"

sökvÀg Àr det absoluta namnet pÄ den gamla katalogen (sökvÀgen kommer vara en symbolisk lÀnk nÀr installationen Àr fÀrdig) och nytt-mÄl Àr mÄlet pÄ den nya symboliska lÀnken i sökvÀg . Den kan antingen vara absolut eller relativ till katalogen som innehÄller sökvÀg .

Aktuell implementation: I preinst 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 sökvÀg .dpkg-backup och en tom samlingsplatskatalog skapas i sökvÀg , markerad med en fil sÄ att dpkg kan hÄlla ordning pÄ den. Vid konfigurering slutför postinst vÀxlingen om sökvÀg .dpkg-backup fortfarande Àr en katalog och sökvÀg Àr samlingsplatskatalogen; den tar bort mÀrkningsfilen, flyttar nyligen skapade filer inuti samlingskatalogen till mÄlet för den symboliska lÀnken nytt-mÄl /, ersÀtter den nu tomma samlingskatalogen sökvÀg med en symbolisk lÀnk till nytt-mÄl och tar bort sökvÀg .dpkg-backup . Vid avbruten uppgradering eller installation byter postrm tillbaka namnet frÄn sökvÀg .dpkg-backup till sökvÀg om sÄ behövs.

INTEGRERA I PAKET

NÀr ett paketeringshjÀlpprogram anvÀnds, kontrollera att det har direkt integrering med dpkg-maintscript-helper , nÄgot som kan göra ditt liv enklare. Se till exempel dh_installdeb (1).

Givet att dpkg-maintscript-helper anvĂ€nds i preinst 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 rm_conffile och mv_conffile Ă€r det 1.15.7.2, för symlink_to_dir och dir_to_symlnk Ă€r det 1.17.14:

Pre-Depends: dpkg (>= 1.17.14)

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 :

if dpkg-maintscript-helper supports kommando ; then
dpkg-maintscript-helper kommando ...
fi

Kommandot supports returnerar 0 vid framgÄng, annars 1. Kommandot supports 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.

MILJÖVARIABLER

DPKG_ROOT

Om satt kommer det anvÀndar som filsystemets rotkatalog.

DPKG_ADMINDIR

Omm satt kommer det anvÀndas som dpkg :s datakatalog.

DPKG_COLORS

VÀljer fÀrglÀge (sedan dpkg 1.19.1). För nÀrvarande godtas följande vÀrden: auto (förval), always och never .

SE ÄVEN

dh_installdeb (1).

ÖVERSÄTTNING

Peter Krefting och Daniel Nylander.