Provided by: dpkg_1.21.1ubuntu2.3_amd64 bug

NAAM

       dpkg-maintscript-helper - omzeilt in de scripts van de onderhouder gekende beperkingen van dpkg

OVERZICHT

       dpkg-maintscript-helper commando [parameter...] -- onderhouderscriptparameter...

COMMANDO'S EN PARAMETERS

       supports commando
       rm_conffile configuratiebestand [vorige-versie [pakket]]
       mv_conffile oud-configuratiebestand nieuw-configuratiebestand [vorige-versie [pakket]]
       symlink_to_dir padnaam oud-doel [vorige-versie [pakket]]
       dir_to_symlink padnaam nieuw-doel [vorige-versie [pakket]]

BESCHRIJVING

       Dit  programma  is  ontwikkeld  om  uitgevoerd  te worden binnenin onderhouderscripts om sommige taken te
       verrichten die dpkg (nog) niet alleen kan uitvoeren, ofwel omwille  van  gemaakte  keuzes  inzake  design
       ofwel ten gevolge van actuele beperkingen.

       Veel  van  deze  taken  vereisen  gecoördineerde  actie  van  verschillende  onderhouderscripts (preinst,
       postinst, prerm, postrm). Om fouten te vermijden moet gewoon dezelfde aanroep in alle  scripts  geplaatst
       worden  en  het  programma  zal  zijn  gedrag  automatisch  aan passen op basis van de omgevingsvariabele
       DPKG_MAINTSCRIPT_NAME en de argumenten van de onderhouderscripts die na een dubbel koppelteken  opgegeven
       moeten worden.

GEMEENSCHAPPELIJKE PARAMETERS

       vorige-versie
           Definieert  de  laatste versie van het pakket waarvan de opwaardering de operatie moet uitlokken. Het
           is belangrijk om vorige-versie correct te berekenen, zodat de  operaties  correct  uitgevoerd  worden
           zelfs  in  het  geval  de  gebruiker het pakket met een lokaal versienummer herbouwde. Indien vorige-
           versie leeg of weggelaten is, dan wordt geprobeerd om bij elke opwaardering de operatie uit te voeren
           (merk op dat het veiliger is om de versie op te geven zodat slechts eenmaal geprobeerd  wordt  om  de
           operatie uit te voeren).

           Indien  sinds verschillende versies geen configuratiebestand meer meegeleverd werd en u nu de scripts
           van de pakketonderhouder aan het wijzigen bent om het verouderde bestand op te ruimen,  moet  vorige-
           versie  ingesteld  worden  op de versie van het pakket dat u nu aan het voorbereiden bent, niet op de
           eerste versie van het pakket zonder het configuratiebestand. Dit geldt op dezelfde  wijze  voor  alle
           andere acties.

           Voor  een  configuratiebestand  dat  in  de versie 2.0-1 van een pakket verwijderd werd, moet vorige-
           versie ingesteld worden op 2.0-1~. Dit heeft tot effect dat het configuratiebestand verwijderd wordt,
           zelfs als de gebruiker de vorige versie 1.0-1 herbouwde als 1.0-1lokaal1. En in het geval  waarin  in
           een  pakket een pad eerst een symbolische koppeling was (bij versie 1.0-1) en later een map werd (bij
           versie 2.0-1), maar u pas in versie 3.0-1 de eigenlijke omschakeling doorvoert in de scripts  van  de
           pakketonderhouder, moet vorige-versie ingesteld worden op 3.0-1~.

       pakket
           De  pakketnaam  met  die  padnaam/namen. Als het pakket “Multi-Arch: same” is, moet deze parameter de
           architectuurkwalificatie bevatten, anders zou er gewoonlijk geen architectuurkwalificatie  in  moeten
           voorkomen (aangezien dit geen cross-grades zou toelaten, of de omschakeling van architectuurspecifiek
           naar  architectuur  all  en  vice  versa).  Indien de parameter leeg is of weggelaten werd, zullen de
           omgevingsvariabelen DPKG_MAINTSCRIPT_PACKAGE en DPKG_MAINTSCRIPT_ARCH (zoals die door dpkg  ingesteld
           werden  bij  het  uitvoeren  van de scripts van de onderhouder) gebruikt worden om een pakketnaam met
           architectuurkwalificatie te genereren.

       --  Alle parameters van de scripts van de pakketonderhouder moeten doorgegeven worden aan  het  programma
           na --.

TAKEN IN VERBAND MET CONFIGURATIEBESTANDEN

       Bij  het  opwaarderen  van  een  pakket  zal  dpkg  niet automatisch een configuratiebestand van het type
       conffile (conffile = een configuratiebestand waarin dpkg door de  gebruiker  gemaakte  aanpassingen  moet
       behouden)  verwijderen  indien  dat  niet  in  de  nieuwe versie voorkomt. Daarvoor zijn twee belangrijke
       redenen. De eerste is dat het configuratiebestand per ongeluk weggevallen kan zijn  en  dat  de  volgende
       versie dit zou kunnen herstellen en dat gebruikers hun aanpassingen niet graag verloren zouden zien gaan.
       De  tweede  is  om  pakketten  de  mogelijkheid  te  bieden om over te gaan van een door dpkg onderhouden
       configuratiebestand naar een bestand dat onderhouden wordt door  de  scripts  van  de  pakketonderhouder,
       meestal met behulp van gereedschap zoals debconf of ucf.

       Dit  houdt  in  dat  indien  een  pakket de bedoeling heeft om een configuratiebestand te hernoemen of te
       verwijderen, het dit expliciet moet doen en dat dpkg-maintscript-helper kan gebruikt  worden  in  scripts
       van  de  pakketonderhouder  om  het  verwijderen en verplaatsen van configuratiebestanden op een elegante
       manier uit te voeren.

   Een configuratiebestand verwijderen
       Opmerking: In  de  meeste  gevallen  kan  dit  vervangen  worden  door  de  vlag  "remove-on-upgrade"  in
       DEBIAN/conffiles (sinds dpkg 1.20.6), zie deb-conffiles(5).

       Indien  een  configuratiebestand volledig verwijderd wordt, moet het van schijf verwijderd worden, tenzij
       de gebruiker het aangepast heeft. Indien er lokale aanpassingen aangebracht werden, moeten  die  behouden
       blijven.   Indien   het   opwaarderen   van  het  pakket  afbreekt,  mag  het  pas  in  onbruik  geraakte
       configuratiebestand niet verdwijnen.

       Dit alles wordt toegepast door het volgende shell-fragment te plaatsen in de scripts preinst, postinst en
       postrm van de pakketonderhouder:

            dpkg-maintscript-helper rm_conffile \
               configuratiebestand vorige-versie pakket -- "$@"

       configuratiebestand is de bestandsnaam van het te verwijderen configuratiebestand.

       Huidige toepassing: in het script preinst controleert het of het configuratiebestand  gewijzigd  werd  en
       hernoemt   het   ofwel  naar  configuratiebestand.dpkg-remove  (als  het  niet  gewijzigd  was)  of  naar
       configuratiebestand.dpkg-backup (als het wel gewijzigd was). In het script  postinst  wordt  dit  laatste
       bestand  hernoemd naar configuratiebestand.dpkg-bak en het wordt ter referentie behouden vermits het door
       de gebruiker gemaakte aanpassingen bevat. In het eerste geval (niet gewijzigd configuratiebestand)  wordt
       het  bestand verwijderd. Indien de opwaardering van het pakket afbreekt, herinstalleert het script postrm
       het originele configuratiebestand. Tijdens het uitvoeren van  een  wisopdracht  (purge)  zal  het  script
       postrm ook het tot dan bewaarde bestand .dpkg-bak verwijderen.

   Een configuratiebestand hernoemen
       Indien een configuratiebestand verplaatst wordt van de ene locatie naar een andere, moet u er voor zorgen
       dat  eventuele  wijzigingen die de gebruiker maakte mee gaan. Op het eerste gezicht kan dit lijken op een
       eenvoudige aanpassing aan het script preinst. Dat zal evenwel als resultaat hebben dat de gebruiker  door
       dpkg  gevraagd  wordt  om de aanpassingen aan het configuratiebestand goed te keuren, al is hij er in dit
       geval niet voor verantwoordelijk.

       Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende shell-fragment te  plaatsen  in
       de scripts preinst, postinst en postrm van de pakketonderhouder:

            dpkg-maintscript-helper mv_conffile \
               oud-configuratiebestand nieuw-configuratiebestand vorige-versie pakket -- "$@"

       oud-configuratiebestand   en   nieuw-configuratiebestand   zijn  de  oude  en  de  nieuwe  naam  van  het
       configuratiebestand dat hernoemd moet worden.

       Huidige toepassing: het script preinst controleert of het configuratiebestand gewijzigd werd. Indien  dat
       het   geval   is   wordt   het   gelaten   waar   het   is,   anders   wordt   het   hernoemd  naar  oud-
       configuratiebestand.dpkg-remove.   Bij   het   configureren   verwijdert   het   script   postinst   oud-
       configuratiebestand.dpkg-remove  en  hernoemt  oud-configuratiebestand naar nieuw-configuratiebestand als
       oud-configuratiebestand nog steeds  voorhanden  is.  Bij  abort-upgrade/abort-install  (afbreken  van  de
       opwaardering/installatie)  hernoemt  het script postrm zo nodig oud-configuratiebestand.dpkg-remove terug
       naar oud-configuratiebestand.

OMSCHAKELEN TUSSEN SYMBOLISCHE KOPPELING EN MAP

       Bij het opwaarderen van een pakket zal dpkg niet automatisch een symbolische koppeling omzetten naar  een
       map of vice versa. Degradaties worden niet ondersteund en het pad wordt onveranderd gelaten.

   Een symbolische koppeling omzetten naar een map
       Indien  een  symbolische  koppeling  veranderd  wordt  naar  een  echte map, moet u er voor zorgen dat de
       symbolische koppeling verwijderd wordt voor het uitpakken. Op het eerste gezicht kan dit  een  eenvoudige
       wijziging  in  het  script  preinst  lijken.  Nochtans  kan dit enige problemen opleveren in het geval de
       systeembeheerder de symbolische koppeling lokaal aanpaste of bij een degradatie van het pakket.

       Een vlotte manier van hernoemen kan gerealiseerd worden door het volgende shell-fragment te  plaatsen  in
       de scripts preinst, postinst en postrm van de pakketonderhouder:

            dpkg-maintscript-helper symlink_to_dir \
               padnaam oud-doel vorige-versie pakket -- "$@"

       padnaam  is  de  absolute naam van de oude symbolische koppeling (op het einde van de installatie zal het
       pad een map zijn) en oud-doel is de naam van het doel van de vroegere symbolische koppeling  in  padnaam.
       Die kan ofwel absoluut zijn ofwel relatief ten opzichte van de map die padnaam bevat.

       Huidige  toepassing: het script preinst gaat na of de symbolische koppeling bestaat en verwijst naar oud-
       doel.  Is  dit  niet  het  geval  dan  wordt  ze  gerust  gelaten.  Anders   wordt   ze   hernoemd   naar
       padnaam.dpkg-backup.  Tijdens  het configureren verwijdert het script postinst padnaam.dpkg-backup indien
       padnaam.dpkg-backup  nog  steeds  een  symbolische  koppeling  is.  Bij  een  abort-upgrade/abort-install
       (afbreken  van de opwaardering/installatie) hernoemt het script postrm padnaam.dpkg-backup zo nodig terug
       naar padnaam.

   Een map omzetten naar een symbolische koppelling
       Indien een echte map omgezet wordt naar een symbolische koppeling,  moet  u  ervoor  zorgen  dat  de  map
       verwijderd  wordt  voor  het  uitpakken.  Dit kan op het eerste gezicht een eenvoudige aanpassing aan het
       script  preinst  lijken.  Nochtans  kan  dit  enige   problemen   opleveren   in   het   geval   de   map
       configuratiebestanden  bevat,  padnamen  die  eigendom  zijn  van  andere pakketten of lokaal aangemaakte
       padnamen, of in het geval het pakket gedegradeerd wordt.

       Een elegante omschakeling kan gerealiseerd worden door het volgende shell-fragment  op  te  nemen  in  de
       scripts preinst, postinst en postrm van de pakketonderhouder:

            dpkg-maintscript-helper dir_to_symlink \
               padnaam nieuw-doel vorige-versie pakket -- "$@"

       padnaam  is de absolute naam van de oude map (het pad zal op het einde van de installatie een symbolische
       koppeling zijn) en nieuw-doel is het doel van de nieuwe symbolische koppeling in padnaam. Dit  kan  ofwel
       absoluut of relatief zijn ten opzichte van de map die padnaam bevat.

       Huidige  toepassing:  het  script  preinst  controleert  of de map bestaat en geen configuratiebestanden,
       padnamen die eigendom zijn van andere pakketten of lokaal aangemaakte padnamen bevat.  Is  dat  niet  het
       geval,  dan  wordt ze gerust gelaten. Anders wordt ze hernoemd naar padnaam.dpkg-backup en wordt een lege
       voorlopige map padnaam aangemaakt die met een bestand gemarkeerd  wordt,  zodat  dpkg  ze  kan  opvolgen.
       Tijdens  het configureren beëindigt het script postinst de overgang indien padnaam.dpkg-backup nog steeds
       een map is en padnaam de voorlopige map. Het verwijdert het bestand dat de  voorlopige  map  markeert  en
       verplaatst  de  zopas  in  de map aangemaakte bestanden naar het doel van de symbolische koppeling nieuw-
       doel/, vervangt de nu lege voorlopige map padnaam door  een  symbolische  koppeling  naar  nieuw-doel  en
       verwijdert   padnaam.dpkg-backup.   In   geval   van   abort-upgrade/abort-install   (afbreken   van   de
       opwaardering/installatie) hernoemt het script postrm zo nodig padnaam.dpkg-backup terug naar padnaam.

DE INTEGRATIE IN PAKKETTEN

       Gelieve bij het gebruiken van een hulpmiddel voor het verpakken  na  te  gaan  of  er  geen  systeemeigen
       integratie  in  dpkg-maintscript-helper  van  bestaat,  wat  het  leven voor u makkelijker zou maken. Zie
       bijvoorbeeld dh_installdeb(1).

       Gegeven  het  feit  dat  dpkg-maintscript-helper  gebruikt  wordt  in  het  script  preinst,  houdt   een
       onvoorwaardelijk  gebruik  ervan  een  voorafgaande  vereiste in om te kunnen garanderen dat de benodigde
       versie van dpkg voordien uitgepakt werd. De benodigde versie hangt af van het  gebruikte  commando.  Voor
       rm_conffile en mv_conffile is dat 1.15.7.2. Voor symlink_to_dir en dir_to_symlink is dat 1.17.14:

        Pre-Depends: dpkg (>= 1.17.14)

       Maar  in veel gevallen is de operatie die door het programma uitgevoerd wordt, niet kritiek van aard voor
       het pakket en in plaats van een voorafgaande vereiste te gebruiken,  kunnen  we  ook  het  programma  pas
       aanroepen  als  we  weten  dat  het  benodigde programma ondersteund wordt door de huidige geïnstalleerde
       versie van dpkg:

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

       Het commando supports geeft in geval van succes een 0 terug en anders een 1. Het commando  supports  gaat
       na  of  de  omgevingsvariabelen  die ingesteld worden door dpkg en die het script nodig heeft, voorhanden
       zijn. Indien de omgeving niet voldoet, zal dit als een mislukking beschouwd worden.

OMGEVING

       DPKG_ROOT
           Indien dit ingesteld werd, zal dit gebruikt worden als de basismap van het bestandssysteem.

       DPKG_ADMINDIR
           Indien dit ingesteld werd, zal dit gebruikt worden als de datamap voor dpkg.

       DPKG_COLORS
           Stelt de kleurmodus in (sinds dpkg 1.19.1). Waarden die momenteel gebruikt mogen  worden  zijn:  auto
           (standaard), always en never.

ZIE OOK

       dh_installdeb(1).

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