Provided by: dpkg_1.21.1ubuntu2.3_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

       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.

DELADE PARAMETRAR

       tidigare-version
           Anger  den  senaste  version  av paketet vars uppgradering skall 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
           The  package  name owning the pathname(s). When the package is “Multi-Arch: same” this parameter must
           include the architecture  qualifier,  otherwise  it  should  not  usually  include  the  architecture
           qualifier  (as  it  would  disallow  cross-grades,  or  switching from being architecture specific to
           architecture all or vice versa). If the parameter is empty or omitted,  the  DPKG_MAINTSCRIPT_PACKAGE
           and  DPKG_MAINTSCRIPT_ARCH environment variables (as set by dpkg when running the maintainer scripts)
           will be used to generate an arch-qualified package name.

       --  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  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
       Note: This can be replaced in most cases by the "remove-on-upgrade" flag in DEBIAN/conffiles (since  dpkg
       1.20.6), see 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å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 \
               conffile prior-version package -- "$@"

       konffil är namnet på konffilen som skall 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  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 \
               old-conffile new-conffile prior-version package -- "$@"

       gammalkonffil och nykonffil är de gamla och nya namnen på konffilen vars namn skall 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.

   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 skall
       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 \
               pathname old-target prior-version package -- "$@"

       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 skall 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 \
               pathname new-target prior-version package -- "$@"

       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 command; then
               dpkg-maintscript-helper command ...
            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
           If set, it will be used as the filesystem root directory.

       DPKG_ADMINDIR
           If set, it will be used as the dpkg data directory.

       DPKG_COLORS
           Sets the color mode (since dpkg 1.19.1). The currently accepted values are:  auto  (default),  always
           and never.

SE ÄVEN

       dh_installdeb(1).

ÖVERSÄTTNING

       Peter Krefting och Daniel Nylander.

1.21.1                                             2024-02-23                         dpkg-maintscript-helper(1)