deb-substvars(5) | dpkg suite | deb-substvars(5) |
deb-substvars - Debians källkods-substitueringsvariabler
debian/substvars, debian/binärpaket.substvars, variabler
Innan dpkg-source, dpkg-gencontrol och dpkg-genchanges skriver sin styrinformation (till control-filen i källkodspaketet .dsc för dpkg-source och till standard ut för dpkg-gencontrol och dpkg-genchanges) kommer de utföra viss variabelsubstituering på utdatafilen.
En variabelsubstitution har formen ${variabelnamn}. Variabelnamn består av alfanumeriska tecken (a-zA-Z0-9), bindestreck (-) och kolon (:) och börjar med ett alfanumeriskt tecken, och är skiftlägeskänsliga. Variabelsubstitueringar utförs upprepade gånger tills det inte kvarstår några - det resulterande innehållet i fältet läses av på nytt efter substitueringen för att se om det behövs fler substitueringar.
Substitueringsvariabler kan anges i en fil. En sådan fil består av rader på formen namn=värde eller namn?=<värde>. Operatorn = tilldelar en normal substitueringsvariabel, medan operatorn ?= (sedan dpkg 1.21.8) tilldelar en valfri variabel som inte skriver ut någon varning även om den inte används. Avslutande blanksteg på en rad, blanka rader och rader som börjar med en #-symbol (kommentarer) ignoreras.
Variabler kan sättas genom att använda den gemensamma kommandoradsflaggan -V. De kan även anges i filen debian/substvars (eller vilken som helst annan fil som anges med gemensamma flaggan -T).
När alla substitueringar har utförts ersätts varje förekomst av strängen ${} (som inte är en faktisk substitueringsvariabel) med ett $-tecken. Detta kan användas som en ersättningssekvens såsom ${}{VARIABEL} vilket kommer bli till ${VARIABLE} i utdata.
Om en variabel refereras till men inte definieras kommer en varning att genereras och ett tomt värde används.
Medan variabelsubstituering görs på alla fält i styrfilen är det några av fälten som används och behövs vid byggning innan substitueringen ännu har utförts. Därför går det inte att använda variabler i fälten Package, Source och Architecture.
Variabelsubstituering sker över innehållet i fälten efter att de har tolkats, vilket innebär att om du vill att en variabel ska expanderas över flera rader så behöver du inte inkludera ett blanksteg efter nyradstecknet. Detta görs implicit när fältet skrivs ut. Till exempel, om variabeln ${Description} sätts till "foo är bar.${Newline}foo är bra." och du har följande fält:
Description: programmet foo ${Description} . Mer text.
Så blir resultatet:
Description: programmet foo foo är bar. foo är bra. . Mer text.
I tillägg är alltid följande standardvariabler tillgängliga:
Observera: Tänk på att det här aldrig kan vara något annat än ett närmevärde eftersom den faktiska storleken som används på det installerade systemet i stor grad beror på vilket filsystem som används och dess parameterar, vilket kan komma att använda mer eller mindre plats än vad som anges i det här fältet.
dpkg(1), dpkg-vendor(1), dpkg-genchanges(1), dpkg-gencontrol(1), dpkg-shlibdeps(1), dpkg-source(1).
Peter Krefting och Daniel Nylander.
2023-05-11 | 1.21.22 |