deb-substvars(5) | dpkg suite | deb-substvars(5) |
deb-substvars - Substitutievariabelen in Debian broncode
debian/substvars, debian/binair-pakket.substvars, variabelen
Vooraleer dpkg-source, dpkg-gencontrol en dpkg-genchanges hun comtrole-informatie neerschrijven (naar het broncodecontrolebestand .dsc in het geval van dpkg-source en naar standaarduitvoer in het geval van dpkg-gencontrol en dpkg-genchanges), voeren ze een aantal variabelesubstituties uit op het uitvoerbestand.
Een variabelesubstitutie heeft als vorm ${variabelenaam}. Variabelenamen bestaan uit alfanumerieke tekens (a-zA-Z0-9), koppeltekens (-) en dubbele punten (:) en beginnen met een alfanumeriek teken. Ze zijn ook hoofdlettergevoelig, ook al kunnen ze verwijzen naar andere entiteiten die hoofdletterbehoudend zijn. Variabelesubstituties worden bij herhaling uitgevoerd tot er geen meer overblijven. Na een substitutie wordt de volledige tekst van het veld opnieuw doorzocht op nog meer uit te voeren substituties.
Substitutievariabelen kunnen in een bestand worden opgegeven. Deze bestanden bestaan uit regels van de vorm naam=waarde of naam?=waarde. De operator = wijst een normale substitutievariabele toe, terwijl de operator ?= (sinds dpkg 1.21.8) een optionele substitutievariabele toewijst die geen waarschuwingen geeft, zelfs als deze niet wordt gebruikt. Resterende witruimte op elke regel, lege regels en regels die beginnen met het symbool # (commentaar) worden genegeerd.
Variabelen kunnen ingesteld worden met behulp van de algemene optie -V. Ze kunnen ook opgegeven worden in het bestand debian/substvars (of om het even welk ander bestand dat opgegeven wordt met de algemene optie -T).
Nadat alle substituties uitgevoerd werden, wordt de tekenreeks ${} (wat geen daadwerkelijke substitutievariabele is) overal waar die voorkomt, vervangen door het teken $. Dit kan gebruikt worden als een escape-sequentie zoals ${}{VARIABELE}, wat in de uitvoer de vorm zal aannemen van ${VARIABELE}.
Indien er gerefereerd wordt naar een niet-gedefinieerde variabele, wordt een waarschuwing gegeven en wordt verondersteld dat de waarde ervan leeg is.
Hoewel variabelesubstitutie uitgevoerd wordt op alle controlevelden, zijn sommige van die velden nodig tijdens het bouwen wanneer de substitutie nog niet heeft plaats gevonden. Dat is de reden waarom u geen variabelen kunt gebruiken in de velden Package, Source en Architecture.
Variabelesubstitutie vindt plaats op de inhoud van de velden nadat die ontleed werden. Indien u dus wenst dat een variabele zich uitstrekt over meerdere regels, moet u na het regeleinde geen spatie invoegen. Dit gebeurt impliciet bij de uitvoer van het veld. Indien bijvoorbeeld de variabele ${Description} ingesteld werd op "foo is bar.${Newline}foo is geweldig." en u het volgende veld heeft:
Description: toepassing foo ${Description} . Bijkomende tekst.
Dit zal dit resulteren in:
Description: toepassing foo foo is bar. foo is geweldig. . Bijkomende tekst.
Daarnaast zijn altijd de volgende standaardvariabelen beschikbaar::
Opmerking: Houd er rekening mee dat dit steeds slechts een schatting kan zijn, aangezien de werkelijke grootte die op het geïnstalleerde systeem gebruikt zal worden, in grote mate afhankelijk is van het gebruikte bestandssysteem en de parameters ervan, waardoor het eindresultaat kan zijn dat ofwel meer ofwel minder ruimte in beslag genomen wordt dan in dit veld opgegeven werd.
dpkg(1), dpkg-vendor(1), dpkg-genchanges(1), dpkg-gencontrol(1), dpkg-shlibdeps(1), dpkg-source(1).
2023-05-11 | 1.21.22 |