deb-control - Indeling van het controlebestand van een Debian
binair pakket
Elk binair Debian-pakket bevat een control-bestand in zijn
control-element en zijn deb822(5)-indeling is een gedeelte van
het controlebestand debian/control in Debian-bronpakketten, zie
deb-src-control(5).
Dit bestand bevat een aantal velden. Ieder veld begint met een
markering, zoals Package of Version (niet
hoofdlettergevoelig), gevolgd door een dubbele punt en de tekstinhoud van
het veld (hoofdlettergevoelig tenzij anders vermeld). Velden worden enkel
door veldmarkeringen begrensd. De tekstinhoud van het veld kan met andere
woorden verschillende regels lang zijn, maar de installatiegereedschappen
zullen bij het verwerken van de tekstinhoud de regels gewoonlijk samenvoegen
(behalve voor het veld Description; zie hierna).
- Package:
pakketnaam (verplicht)
- De waarde van dit veld bepaalt de pakketnaam en wordt door de meeste
installatiegereedschappen gebruikt om bestandsnamen te genereren.
- Package-Type:
deb|udeb|type
- Dit veld definieert het pakkettype. udeb is voor pakketten waarvan
de omvang aan beperkingen onderworpen is en die door het
installatieprogramma van Debian gebruikt worden. deb is de
standaardwaarde, die verondersteld wordt als het veld ontbreekt. In de
toekomst kunnen nog andere types toegevoegd worden.
- Version:
versie-tekenreeks (verplicht)
- Gewoonlijk is dit het originele versienummer van het pakket, welke vorm de
auteur van het programma er ook voor gebruikt. Het kan ook een
Debian-revisienummer bevatten (voor niet uit Debian stammende pakketten).
De exacte indeling en het sorteringsalgoritme worden beschreven in
deb-version(7).
- Maintainer:
volledige-naam-en-e-mail (aanbevolen)
- Moet opgemaakt worden volgens de indeling “Joe Bloggs
<jbloggs@foo.com>”, en is gewoonlijk de persoon die het
pakket maakte, in tegenstelling tot de auteur van de verpakte
software.
- Description:
korte-beschrijving (aanbevolen)
- uitgebreide-beschrijving
- De indeling van een pakketbeschrijving bestaat uit een beknopte korte
samenvatting op de eerste regel (na de veldmarkering Description)
en een langere meer gedetailleerde beschrijving op de volgende regels.
Elke regel van de uitgebreide beschrijving moet voorafgegaan worden door
een spatie, en lege regels in de uitgebreide beschrijving moeten
één enkele ‘.’ bevatten die volgt op de
eraan voorafgaande spatie.
- Section:
sectie
- Dit is een veld van algemene aard dat het pakket in een categorie
onderbrengt op basis van de software die het installeert. Enkele
gebruikelijke secties zijn utils, net, mail,
text, x11, enz.
- Priority:
prioriteit
- Duidt het belang van dit pakket aan in verhouding tot het gehele systeem.
Gebruikelijke prioriteiten zijn required, standard,
optional, extra, enz.
De velden Section en Priority hebben gewoonlijk een
welbepaalde set mogelijke waarden, afhankelijk van de richtlijnen van de
distributie.
- Installed-Size:
grootte
- Bij benadering de totale grootte van de door het pakket
geïnstalleerde bestanden, uitgedrukt in KiB. Het algoritme voor het
berekenen van de grootte wordt beschreven in deb-substvars(5).
- Protected:
yes|no
- Meestal is dit veld enkel nodig als het antwoord yes is. Het geeft
een pakket aan dat doorgaans vereist is voor het correct opstarten van het
systeem of gebruikt wordt voor aangepaste systeem-lokale metapakketten.
dpkg(1) of om het even welk ander installatiegereedschap zal niet
toestaan dat een pakket van het type Protected verwijderd wordt
(tenminste niet zonder dat één van de forceeropties gebruikt
wordt).
Ondersteund sinds dpkg 1.20.1.
- Essential:
yes|no
- Meestal is dit veld enkel nodig als het antwoord yes is. Het geeft
een pakket aan dat vereist is voor het verpakkingssysteem, voor de goede
werking van het systeem in het algemeen of tijdens het opstarten (hoewel
dit laatste in plaats daarvan zou moeten worden omgezet naar het veld
Protected). dpkg(1) of om het even welk ander
installatiegereedschap zal niet toestaan dat een pakket van het type
Essential verwijderd wordt (tenminste niet zonder dat
één van de forceeropties gebruikt wordt).
- Build-Essential:
yes|no
- Meestal is dit veld enkel nodig als het antwoord yes is en het
wordt gewoonlijk ingevoegd door de archiefsoftware. Het duidt een pakket
aan dat vereist is voor het bouwen van andere pakketten.
- Architecture:
arch|all (verplicht)
- De architectuur geeft aan voor welk type hardware dit pakket gecompileerd
werd. Gebruikelijke architecturen zijn amd64, armel,
i386, powerpc, enz. Merk op dat de waarde all bedoeld
is voor pakketten die architectuuronafhankelijk zijn. Enkele voorbeelden
hiervan zijn shell- en Perl-scripts en documentatie.
- Origin:
naam
- De naam van de distributie waaruit dit pakket afkomstig is.
- Bugs:
URL
- De URL van het opvolgingssysteem voor bugs van dit pakket. De
indeling die momenteel gebruikt wordt is
bts-type://bts-adres, zoals
debbugs://bugs.debian.org.
- Homepage:
URL
- De URL van de homepage van het toeleverend project (upstream).
- Tag:
lijst-van-markeringen
- Lijst van markeringen (tags) die de eigenschappen van het pakket
beschrijven. De beschrijving en de lijst van ondersteunde markeringen/tags
is te vinden in het pakket debtags.
- Multi-Arch:
no|same|foreign|allowed
- Dit veld wordt gebruikt om aan te geven hoe dit pakket zich moet gedragen
op een multi-arch installatie.
- no
- Dit is de standaardwaarde als dit veld weggelaten werd. Dit veld toevoegen
met een expliciete waarde no is over het algemeen niet nodig.
- same
- Dit pakket is co-installeerbaar met zichzelf, maar het kan niet gebruikt
worden om te voldoen aan een vereiste van een pakket dat tot een andere
architectuur behoort.
- foreign
- Dit pakket is niet co-installeerbaar met zichzelf, maar het mag wel de
toestemming krijgen om te voldoen aan een architectuurkwalificatieloze
vereiste van een pakket dat tot een andere architectuur behoort (indien
een vereiste wel een expliciete architectuurkwalificatie heeft, wordt de
waarde foreign genegeerd).
- allowed
- Dit laat pakketten die dit pakket als vereiste hebben
(reverse-dependencies) toe om in hun Depends-veld aan te geven dat
ze dit pakket ook van een andere architectuur aanvaarden door bij de
pakketnaam de kwalificatie :any te vermelden. Anders blijft dit
zonder effect.
- Source:
broncode-naam [(broncode-versie)]
- De naam van het broncodepakket waaruit dit binaire pakket afkomstig is,
indien die verschillend is van de naam van het pakket zelf. Indien de
versie van het broncodepakket verschilt van de versie van het binaire
pakket, dan zal de broncode-naam gevolgd worden door een
broncode-versie tussen haakjes. Dit kan het geval zijn als de
upload een uitsluitend binaire upload is die niet door de beheerder
uitgevoerd wordt, of wanneer via «dpkg-gencontrol -v»
voor het binaire pakket een verschillend versienummer ingesteld
wordt.
- Subarchitecture:
waarde
- Kernel-Version:
waarde
- Deze velden worden door het installatieprogramma van Debian gebruikt en
zijn meestal niet nodig. Zie voor meer details over deze velden
<https://salsa.debian.org/installer-team/debian-installer/-/raw/master/doc/devel/modules.txt>.
- Depends:
pakketlijst
- Lijst van de pakketten die dit pakket nodig heeft om meer dan een
onbeduidende functionaliteit te kunnen bieden. Software voor pakketbeheer
zal niet toelaten dat een pakket geïnstalleerd wordt zonder dat de
pakketten die in zijn veld Depends vermeld worden,
geïnstalleerd worden (tenminste niet zonder het gebruik van
forceeropties). Tijdens een installatie wordt het postinst-script van
pakketten die in het veld Depends vermeld worden, uitgevoerd voor
dat van het pakket dat van hen afhankelijk is. Bij het verwijderen van een
dergelijk pakket daarentegen wordt het prerm-script van dat pakket
uitgevoerd voor die van pakketten die in zijn veld Depends vermeld
staan.
- Pre-Depends:
pakketlijst
- Lijst van de pakketten die geïnstalleerd en geconfigureerd
moeten zijn vooraleer dit pakket geïnstalleerd kan worden. Dit
wordt meestal gebruikt in een geval waarin dit pakket een ander pakket
nodig heeft om zijn preinst-script te kunnen uitvoeren.
- Recommends:
pakketlijst
- Bevat een lijst van pakketten die samen met dit pakket aangetroffen worden
op alle behalve ongewone installaties. Software voor pakketbeheer zal de
gebruiker waarschuwen als die een pakket installeert zonder die welke
vermeld worden in zijn veld Recommends.
- Suggests:
pakketlijst
- Bevat een lijst van pakketten die gerelateerd zijn aan dit pakket en
mogelijks de bruikbaarheid ervan kunnen vergroten, hoewel het perfect
acceptabel is om het zonder die pakketten te installeren.
De syntaxis van de velden Depends, Pre-Depends,
Recommends en Suggests is een lijst van groepen van
alternatieve pakketten. Elke groep is een lijst van pakketten die onderling
gescheiden zijn door het symbool verticale streep (of “pijp”),
‘|’. De groepen worden onderling gescheiden door
komma's. Een komma moet geïnterpreteerd worden als een
“AND” en een pijp als een “OR”, waarbij pijpen
de sterkste binding hebben. Elke pakketnaam kan facultatief gevolgd worden
door een architectuurkwalificatie, die toegevoegd wordt na een dubbele punt
‘:’, facultatief gevolgd door de aanduiding van een
versienummer tussen haakjes.
De naam van een architectuurkwalificatie kan echte
Debian-architectuurnaam zijn (sinds dpkg 1.16.5) of any (sinds dpkg
1.16.2). Indien ze weggelaten is, is ze standaard de architectuur van het
huidige binaire pakket. Een echte Debian-architectuurnaam komt exact overeen
met die architectuur voor die pakketnaam; any komt overeen met om het
even welke architectuur voor die pakketnaam als het pakket gemarkeerd werd
als Multi-Arch: allowed.
Een versienummer kan beginnen met een
‘>>’. In dat geval levert dit met alle latere
versies een overeenkomst op. Een versienummer kan al dan niet ook een
Debian-pakketrevisie bevatten (met een koppelteken tussen versienummer en
Debian-pakketrevisie). Toegestane versierelaties zijn
‘>>’ voor hoger dan,
‘<<’ voor lager dan, ‘>=’
voor hoger of gelijk aan, ‘<=’ voor lager of gelijk
aan en ‘=’ voor gelijk aan.
- Breaks:
pakketlijst
- Bevat een lijst van pakketten die door dit pakket defect gemaakt worden,
bijvoorbeeld door ze bloot te stellen aan bugs indien de vermelde
pakketten op dit pakket zouden rekenen. Software voor pakketonderhoud zal
het configureren van defecte pakketten niet toestaan. Meestal bestaat de
oplossing erin de pakketten die in het veld Breaks vermeld worden,
op te waarderen.
- Conflicts:
pakketlijst
- Bevat een lijst van pakketten die in tegenstrijd/conflict zijn met dit
pakket, bijvoorbeeld omdat ze bestanden met eenzelfde naam bevatten.
Software voor pakketonderhoud zal niet toestaan dat tegenstrijdige
pakketten tegelijkertijd geïnstalleerd zijn. Twee tegenstrijdige
pakketten moeten elk een Conflicts-regel bevatten met daarin de
vermelding van het andere pakket.
- Replaces:
pakketlijst
- Lijst van pakketbestanden die door dit pakket vervangen worden. Dit wordt
gebruikt om dit pakket de toelating te geven om bestanden uit een ander
pakket te overschrijven. Het wordt gewoonlijk gebruikt samen met het veld
Conflicts om het verwijderen van het andere pakket af te dwingen
als dit pakket dezelfde bestanden bevat als het pakket waarmee dit pakket
in tegenstrijd is.
De syntaxis van Breaks, Conflicts en Replaces
is een lijst van met komma's (en facultatieve witruimte) gescheiden
pakketnamen. In de velden Breaks en Conflicts moet de komma
geïnterpreteerd worden als een “OR”. Facultatief kan
ook een architectuurkwalificatie toegevoegd worden aan de pakketnaam volgens
dezelfde syntaxis als hierboven beschreven werd, maar de standaardwaarde is
any in plaats van de architectuur van het binaire pakket. Ook kan bij
de velden Breaks, Conflicts en Replaces facultatief een
versienummer toegevoegd worden volgens dezelfde syntaxis als hierboven werd
beschreven.
- Enhances:
pakketlijst
- Dit is een lijst met pakketten waarvoor dit pakket uitbreidingen biedt.
Het is vergelijkbaar met Suggests, maar in de omgekeerde
richting.
- Provides:
pakketlijst
- Dit is een lijst van virtuele pakketten waarin door dit pakket voorzien
wordt. Gewoonlijk wordt dit gebruikt in het geval meerdere pakketten
dezelfde dienst leveren. Bijvoorbeeld kunnen sendmail en exim beide als
mailserver fungeren en daarom voorzien zij in een gemeenschappelijk pakket
(“mail-transport-agent”) waarvan andere pakketten
afhankelijk kunnen zijn. Dit laat sendmail of exim toe om te fungeren als
een geldige optie om aan die vereiste te voldoen. Hierdoor is het voor
pakketten die een mailserver nodig hebben niet nodig om van alle
mailservers de pakketnaam te kennen en ze, gescheiden door een
‘|’, allemaal te vermelden in een lijst.
De syntaxis van Provides is een lijst van pakketnamen door
komma's (en facultatieve witruimte) van elkaar gescheiden. Facultatief kan
ook een architectuurkwalificatie toegevoegd worden aan de pakketnaam volgens
dezelfde syntaxis als hierboven beschreven werd. Indien dit weggelaten werd,
wordt standaard de architectuur genomen van het huidige binaire pakket.
Facultatief kan ook een exact (is gelijk aan) versienummer opgegeven worden
volgens dezelfde syntaxis als hierboven beschreven werd (gehonoreerd sinds
dpkg 1.17.11).
- Built-Using:
pakketlijst
- Dit veld van vereisten vermeldt extra broncodepakketten die gebruikt
werden bij het bouwen van dit binaire pakket, om te beantwoorden aan de
licentievoorwaarden. Dit is een indicatie voor de software voor
archiefonderhoud dat deze extra broncodepakketten behouden moeten blijven
zolang dit binaire pakket gehandhaafd wordt. Dit veld moet bestaan uit een
met komma's gescheiden lijst van namen van broncodepakketten met een
strikte ‘=’ versierelatie tussen haakjes. Merk op dat
de software voor archiefonderhoud niet geneigd zal zijn om een upload te
aanvaarden van een pakket dat verklaart een Built-Using-relatie te
hebben waaraan in het archief niet voldaan kan worden.
- Static-Built-Using:
pakketlijst
- Dit veld van vereisten vermeldt extra broncodepakketten die gebruikt
werden bij het bouwen van dit binaire pakket, voor statische
bouwdoeleinden (bijvoorbeeld linken naar statische bibliotheken,
compilaties voor brongecentreerde talen zoals Go of Rust, gebruik van
C/C++ bibliotheken met enkel headers, injecteren van datablobs in code,
enz.) Dit is nuttig om bij te houden of dit pakket eventueel opnieuw moet
worden gebouwd wanneer bronpakketten die hier worden vermeld, zijn
bijgewerkt, bijvoorbeeld vanwege beveiligingsupdates. Dit veld moet
bestaan uit een met komma's gescheiden lijst van namen van
broncodepakketten met een strikte ‘=’ versierelatie
tussen haakjes.
Ondersteund sinds dpkg 1.21.3.
- Built-For-Profiles:
profiel-lijst (verouderd)
- Dit veld werd vroeger gebruikt om een lijst van door spaties van elkaar
gescheiden bouwprofielen op te sommen waarmee deze binaire pakketten
gebouwd werden (sinds dpkg 1.17.2 tot 1.18.18). De informatie die vroeger
in dit veld te vinden was, kan nu gevonden worden in het bestand
.buildinfo dat het vervangt.
- Auto-Built-Package:
lijst-met-redenen
- Dit veld somt een lijst van onderling door spaties gescheiden redenen op
waarom dit pakket automatisch gegenereerd werd. Binaire pakketten die met
dit veld gemarkeerd werden, zullen niet te vinden zijn in het
sjablooncontrolebestand debian/control van de broncode. De enige
reden die momenteel gebruikt wordt, is debug-symbols.
- Build-Ids:
lijst met elf-bouw-id's
- Dit veld geeft een lijst op van door witruimte van elkaar gescheiden
ELF-bouw-id's. Dit zijn unieke identificatiesymbolen voor semantisch
identieke ELF-objecten, voor elk ervan in het pakket.
De indeling of de berekeningswijze voor elke bouw-id ligt niet
vast bij ontwerp.
Package: grep
Essential: yes
Priority: required
Section: base
Maintainer: Wichert Akkerman <wakkerma@debian.org>
Architecture: sparc
Version: 2.4-1
Pre-Depends: libc6 (>= 2.0.105)
Provides: rgrep
Conflicts: rgrep
Description: GNU grep, egrep and fgrep.
The GNU family of grep utilities may be the "fastest grep in the west".
GNU grep is based on a fast lazy-state deterministic matcher (about
twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
search for a fixed string that eliminates impossible text from being
considered by the full regexp matcher without necessarily having to
look at every character. The result is typically many times faster
than Unix grep or egrep. (Regular expressions containing backreferencing
will run more slowly, however).
Voor het veld Build-Ids wordt een eerder generieke naam
gebruikt vanuit zijn originele context binnen een ELF-object, welke een zeer
specifieke functie en uitvoerbaar formaat heeft.
deb822(5), deb-src-control(5), deb(5),
deb-version(7), debtags(1), dpkg(1),
dpkg-deb(1).