Provided by: dpkg_1.16.1.2ubuntu7_amd64 bug

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

       rm_conffile konffil [senasteversion [paket]]

       mv_conffile gammalkonffil nykonffil [senasteverison [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.

KONFFIL-RELATERADE ÅTGÄRDER

       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.

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

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

           dpkg-maintscript-helper rm_conffile \
               konffil senasteversion paket -- "$@"

       konffil är filnamnet på den konffil som skall tas  bort.  senasteversion  ä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 senasteversion är tomt eller inte angivits försöks operationen varje
       gång paketet uppgraderas. paket ä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
       "--".

       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  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 \
               gammalkonffil nykonffil senasteversion paket -- "$@"

       gammalkonffil  och  nykonffil  är  det  gamla  och nya namnet på konffilen vars namn skall
       bytas. senasteversion är den senaste versionen av paketet som innehöll konffilen med  dess
       gamla  namn.  Om  senasteversion  ä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).  paket  ä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 "--".

       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.

INTEGRERA I PAKET

       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:

           Pre-Depends: dpkg (>= 1.15.7.2)

       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

FÖRFATTARE

       Upphovsrättsskyddat © 2010 Raphaël Hertzog
       Upphovsrättsskyddat © 2008 Joey Hess
       Upphovsrättsskyddat © 2007 Guillem Jover
       Upphovsrättsskyddat © 2005 Scott James Remnant

       Detta  är  fri  programvara;  se  GNU  General  Public  License version 2 eller senare för
       kopieringsvillkor. Det finns INGEN GARANTI.

ÖVERSÄTTNING

       Peter Krefting och Daniel Nylander.