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:
- Arch
- Aktuell värdarkitektur (dvs., arkitekturen paketet
byggs för, motsvarigheten till DEB_HOST_ARCH).
- vendor:Name
- Aktuellt återförsäljarnamn (sedan dpkg
1.20.0). Värdet kommer från fältet Vendor
för aktuell återförsäljares origin-fil,
så som dpkg-cendor(1) skulle hämta det.
- vendor:Id
- Aktuellt återförsäljar-ID (sedan dpkg
1.20.0). Det här bara en variant av vendor:Name skriven med
små bokstäver.
- source:Version
- Källkodspaketets version (sedan dpkg 1.13.19).
- source:Upstream-Version
- Version på uppströmskällkodspaketet,
inklusive Debianversionens epok, om sådan finns (sedan dpkg
1.13.19).
- binary:Version
- Den binära paketversionen (som kan avvika
från source:Version, till exempel i en binNMU; sedan dpkg
1.13.19).
- Source-Version
- Versionen på källkodspaketet (från
changelog-filen). Variabeln är nu föråldrad
och ger ett felmeddelande om den används eftersom betydelsen
skiljer sig från funktionen, använd i stället
source:Version eller binary:Version allt eftersom vad som
är lämpligt.
- source:Synopsis
- Källkodspaketets synops, hämtad från
källkods-strofens Description-fält, om det finns
(sedan dpkg 1.19.0).
- source:Extended-Description
- Källkodspaketet utökade beskricning,
hämtad från källkods-strofens
Description-fält, om det finns (sedan dpkg 1.19.0).
- Installed-Size
- Den ungefärliga totala storleken på paketets
installerade filer. Värdet kopieras in i motsvarande fält i
styrfilen. Om du ställer in det kommer det att ersätta
värdet på fältet. Om variabeln inte är satt
kommer dpkg-gencontrol att beräkna dess standardvärde
genom att summera storleken på alla vanliga filer och symboliska
länkar avrundat till 1 KiB-enheter, och ett grundvärde
på 1 KiB för andra filsystemsobjekttyper. Hårda
länkar räknas bara som vanliga filer en gång.
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.
- Extra-Size
- Ytterligare diskutrymme som används när
paketet installeras. Om värdet är satt kommer dess
värde att läggas till Installed-Size-variabelns
värde (oavsett om den satts explicit eller om det förvalda
värdet används) innan det kopieras till styrfilens
fält Installed-Size.
-
S:fältnamn
- Värdet på källkods-strofens
fält fältnamn (som måste anges med rätt
form av stora och små bokstäver; sedan dpkg 1.18.11). Om du
sätter dessa variabler händer ingenting förutom
där de explicit expanderats. Variablerna är bara
tillgängliga när styrfiler för binärpaketen
skapas.
-
F:fältnamn
- Värdet på utdatafältet
fältnamn (som måste anges med rätt form av
stora och små bokstäver). Om du sätter dessa
variabler händer ingenting förutom där de explicit
expanderats.
- Format
- Formatet på filen .changes som skapats av
denna version av källkodspaketeringsskripten. Om du sätter
denna variabel kommer innehållet i Format-fältet i
filen .changes också att ändras.
-
Newline, Space, Tab
- Dessa variabler innehåller motsvarande tecken
(radbrytning, blanksteg, tabbsteg).
-
shlibs:beroendefält
- Variabelinställningar på den här
formen skapas av dpkg-shlibdeps.
- dpkg:Upstream-Version
- Uppströmsversionen av dpkg (sedan dpkg
1.13.19).
- dpkg:Version
- Fullständig version av dpkg (sedan dpkg
1.13.19).
- debian/substvars
- Lista över substitueringsvariabler och
-värden.
dpkg(1),
dpkg-vendor(1),
dpkg-genchanges(1),
dpkg-gencontrol(1),
dpkg-shlibdeps(1),
dpkg-source(1).
Peter Krefting och Daniel Nylander.