Provided by: dpkg_1.19.7ubuntu3.2_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 conffile (configuratiebestand) (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 conffile (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 conffiles op een elegante manier
       uit te voeren.

   Een configuratiebestand verwijderen
       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 heeft hij er in dit
       geval niets mee te maken.

       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  conffiles
       (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  conffiles
       (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_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.19.7                                             2022-05-25                         dpkg-maintscript-helper(1)