Provided by: dpkg_1.21.9ubuntu1_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).