Provided by: dpkg_1.19.7ubuntu3.2_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
       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 tidigare-version paket -- "$@"

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

       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 \
               sökväg 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 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 \
               sökväg nytt-mål 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_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.19.7                                             2022-05-25                         dpkg-maintscript-helper(1)