Provided by: dpkg_1.22.11ubuntu1_amd64 bug

NAAM

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

OVERZICHT

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

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 beheerderscripts 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 scripts van de beheerder (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 scripts van de beheerder  die  na  een  dubbel  koppelteken
       opgegeven moeten worden.

       Dit programma werd geïntroduceerd in dpkg 1.15.7.

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 beheerder 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
           beheerder, 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 beheerder) gebruikt worden om een pakketnaam met
           architectuurkwalificatie te genereren.

       --  Alle parameters van de scripts van de beheerder 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 pakketbeheerder,
       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 beheerder 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 beheerder:

            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 beheerder:

            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.

       Opmerking: de symbolische koppelingen en mappen die tijdens deze omzettingen worden gemaakt,  moeten  mee
       opgenomen  worden  in  de  nieuwe  pakketten,  anders kan dpkg ze niet verwijderen bij het wissen van het
       pakket.

   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 beheerder:

            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 beheerder:

            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.22.11                                            2024-08-05                         dpkg-maintscript-helper(1)