dpkg-architecture - de architectuur voor het bouwen van pakketten
instellen en vaststellen
dpkg-architecture [optie...] [commando]
dpkg-architecture biedt een mogelijkheid om de bouw- en
host-architectuur voor het bouwen van pakketten vast te stellen en in te
stellen.
De bouwarchitectuur wordt steeds bepaald door ofwel de variabele
DEB_BUILD_ARCH indien deze ingesteld is (en --force niet werd
opgegeven), of door een externe aanroep van dpkg(1) en kan niet
ingesteld worden aan de commandoregel.
U kunt de host-architectuur specificeren door een van of allebei
de opties --host-arch en --host-type op te geven, anders wordt
de variabele DEB_HOST_ARCH gebruikt als die ingesteld werd (en
--force niet opgegeven werd). Wat de standaard is, wordt vastgesteld
door een externe aanroep van gcc(1) of, als zowel CC als gcc
onbeschikbaar zijn, gelijkgesteld aan de bouwarchitectuur. Een van beide,
--host-arch of --host-type, volstaat. De andere waarde zal op
een gebruikelijke standaardwaarde ingesteld worden. Het is inderdaad
dikwijls beter om slechts één waarde op te geven, vermits
dpkg-architecture een waarschuwing zal geven als de keuze die u maakt
niet met de standaardwaarde overeenkomt.
- -l, --list
- De omgevingsvariabelen weergeven, één per regel, volgens de
indeling VARIABELE=waarde. Dit is de standaardactie.
- -e, --equal
architectuur
- Nagaan of de architecturen gelijk zijn (sinds dpkg 1.13.13). Het
vergelijkt de huidige of opgegeven Debian host-architectuur met
architectuur om na te gaan of ze gelijk zijn. Deze actie zal geen
architectuurjokertekens verwerken. Het commando sluit af met een
afsluitstatus 0 bij gelijkheid en 1 bij ongelijkheid.
- -i, --is
architectuurjokerteken
- Nagaan of de architecturen gelijk zijn (sinds dpkg 1.13.13). Het
vergelijkt de huidige of opgegeven Debian host-architectuur met
architectuurjokerteken, nadat dit als een architectuurjokerteken
verwerkt werd, om na te gaan of beide gelijk zijn. Het commando sluit af
met een afsluitstatus 0 bij gelijkheid en 1 bij ongelijkheid.
- -q, --query
variabelenaam
- De waarde van één enkele variabele tonen.
- -s,
--print-set
- Een export-commando tonen. Dit kan gebruikt worden om de
omgevingsvariabelen in te stellen met behulp van het commando eval
van de POSIX shell of van make, afhankelijk van de indeling van de
uitvoer.
- -u,
--print-unset
- Een commando tonen dat vergelijkbaar is met --print-set, maar om
alle variabelen leeg te maken.
- -c, --command
commando-tekenreeks
- Een commando-tekenreeks uitvoeren in een omgeving waarin alle
variabelen ingesteld zijn op de vastgelegde waarde.
- -L,
--list-known
- Een lijst van geldige architectuurbenamingen tonen. Kan eventueel
ingeperkt worden met een of meer van de vergelijkingsopties
--match-wildcard, --match-bits of --match-endian
(sinds dpkg 1.17.14).
- -?, --help
- Info tonen over het gebruik en afsluiten.
- --version
- De versie tonen en afsluiten.
- -a, --host-arch
architectuur
- De Debian-architectuur voor de host instellen.
- -t, --host-type
gnu-systeemtype
- Het GNU-systeemtype instellen voor de host.
- -A, --target-arch
architectuur
- De Debian-architectuur instellen voor het doel (sinds dpkg 1.17.14).
- -T, --target-type
gnu-systeemtype
- Het GNU-systeemtype instellen voor het doel (sinds dpkg 1.17.14).
- -W, --match-wildcard
architectuurjokerteken
- De architecturen die door --list-known weergegeven worden, beperken
tot die welke beantwoorden aan het opgegeven architectuurjokerteken (sinds
dpkg 1.17.14).
- -B, --match-bits
architectuur-bits
- De architecturen die door --list-known weergegeven worden, beperken
tot die met de opgegeven CPU-bits (sinds dpkg 1.17.14). Ofwel 32
ofwel 64.
- -E, --match-endian
architectuur-bytevolgorde
- De architecturen die door --list-known weergegeven worden, beperken
tot die met de opgegeven bytevolgorde (endianness) (sinds dpkg 1.17.14).
Ofwel little ofwel big.
- --print-format
indeling
- Stelt de indeling van de uitvoer van --print-set en
--print-unset (sinds dpkg 1.20.6) in op ofwel shell
(standaard) of make.
- -f, --force
- Waarden die door bestaande omgevingsvariabelen ingesteld zijn en die
dezelfde naam hebben als die welke door de scripts gebruikt worden, worden
gehonoreerd (d.w.z. gebruikt door dpkg-architecture), behalve
wanneer deze forceer-vlag gebruikt wordt. Dit laat de gebruiker toe om een
waarde te vervangen, zelfs als het aanroepen van dpkg-architecture
ingebed zit in een ander script (bijvoorbeeld
dpkg-buildpackage(1)).
- bouwmachine
- De machine waarop het pakket gebouwd wordt.
- hostmachine
- De machine waarvoor het pakket gebouwd wordt.
- doelmachine
- De machine waarvoor de compiler bouwt of waar de emulator code voor zal
uitvoeren. Dit is enkel nodig bij het bouwen van een
kruisgereedschapsketen (cross-toolchain) (of emulator), een die gebouwd
zal worden op de bouwarchitectuur om uitgevoerd te worden op de
hostarchitectuur en code moet bouwen (of geëmuleerd moet uitvoeren)
voor de doelarchitectuur.
- Debian-architectuur
- De tekenreeks waarmee de Debian-architectuur aangeduid wordt en die ook de
boomstructuur met de binaire pakketten in het FTP-archief specificeert.
Voorbeelden: i386, sparc, hurd-i386.
- Debian-architectuurtupel
- Een Debian-architectuurtupel is de volledige unieke architectuurnaam met
de expliciete vermelding van alle componenten. Dit verschilt minstens
daarin van een Debian architectuur dat de component cpu niet de
abi impliceert. Het huidige tupel heeft als vorm
abi-libc-os-cpu. Voorbeelden:
base-gnu-linux-amd64, eabihf-musl-linux-arm.
- Debian-architectuurjokerteken
- Een Debian-architectuurjokerteken is een speciale architectuurtekenreeks
die een overeenkomst oplevert met elke echte architectuur die er onder
hoort. De algemene vorm is een Debian-architectuurtupel met vier of minder
elementen en waarvan er minstens een any is. Ontbrekende elementen
van de tupel worden impliciet als any voorgevoegd, en dus zijn de
volgende koppels equivalent:
Voorbeelden: linux-any, any-i386, hurd-any, eabi-any-any-arm,
musl-any-any.
- GNU-systeemtype
- Een tekenreeks die een architectuurspecificatie inhoudt en bestaat uit
twee delen met daartussen een koppelteken: cpu en systeem. Voorbeelden:
i586-linux-gnu, sparc-linux-gnu, i686-gnu, x86_64-netbsd.
- multiarch-triplet
- Het uitgezuiverde GNU-systeemtype dat voor bestandssysteempaden gebruikt
wordt. Dit triplet verandert zelfs niet wanneer het referentie-ISA
verhoogd wordt, waardoor de resulterende paden stabiel blijven door de
tijd. Het enige verschil met het GNU-systeemtype is momenteel dat voor op
i386 gebaseerde systemen het CPU-gedeelte steeds i386 is. Voorbeelden:
i386-linux-gnu, x86_64-linux-gnu. Voorbeelden van paden:
/lib/powerpc64le-linux-gnu/, /usr/lib/i386-kfreebsd-gnu/.
Al deze bestanden moeten aanwezig zijn, wil
dpkg-architecture kunnen werken. Hun locatie kan veranderd worden bij
de programmauitvoering met de omgevingsvariabele DPKG_DATADIR. Deze
tabellen bevatten op hun eerste regel een pseudo-veld format Version
om hun indeling aan te geven, zodat ontleders kunnen nagaan of zij ermee
kunnen omgaan, zoals "# Version=1.0".
- /usr/share/dpkg/cputable
- Tabel met gekende CPU-namen en hun omzetting naar een GNU-naam. Indeling
versie 1.0 (sinds dpkg 1.13.2).
- /usr/share/dpkg/ostable
- Tabel van gekende namen van besturingssystemen en hun omzetting naar een
GNU-naam. Indeling versie 2.0 (sinds dpkg 1.18.11).
- /usr/share/dpkg/tupletable
- Omzetting tussen Debian architectuurtupels en Debian architectuurnamen.
Indeling versie 1.0 (sinds dpkg 1.18.11).
- /usr/share/dpkg/abitable
- Tabel van Debian architectuur-ABI-attribuutvervangingen. Indeling versie
2.0 (sinds dpkg 1.18.11).
- /usr/share/dpkg/architecture.mk
- Makefile-fragment dat alle variabelen die dpkg-architecture
uitvoert, behoorlijk instelt en exporteert (sinds dpkg 1.16.1).
dpkg-buildpackage kan gebruikt worden met de optie
-a en geeft die door aan dpkg-architecture. Andere
voorbeelden:
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval $(dpkg-architecture -u)
Verifiëren of de huidige of opgegeven hostarchitectuur
gelijk is aan een architectuur:
dpkg-architecture -elinux-alpha
dpkg-architecture -amips -elinux-mips
Verifiëren of de huidige of opgegeven hostarchitectuur een
Linux-systeem is:
dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any
De omgevingsvariabelen die door dpkg-architecture ingesteld
worden, worden doorgegeven aan debian/rules als variabelen voor make
(zie de documentatie van make). U mag er echter niet op vertrouwen,
aangezien dit het handmatig uitvoeren van het script verhindert. In de
plaats daarvan zou u ze altijd moeten initialiseren met door
dpkg-architecture met de optie -q te gebruiken. Hier volgen
enkele voorbeelden die ook illustreren hoe u in uw pakket ondersteuning voor
cross-compilatie kunt verbeteren:
Het opvragen van het GNU-systeemtype en dit doorgeven aan
./configure:
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
[...]
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
confflags += --build=$(DEB_HOST_GNU_TYPE)
else
confflags += --build=$(DEB_BUILD_GNU_TYPE) \
--host=$(DEB_HOST_GNU_TYPE)
endif
[...]
./configure $(confflags)
Iets enkel voor een specifieke architectuur doen:
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
of indien u enkel dient te controleren wat het type CPU of OS is,
moet u de variabele DEB_HOST_ARCH_CPU of DEB_HOST_ARCH_OS
gebruiken.
Merk op dat u ook kunt betrouwen op een extern Makefile-fragment
om al de variabelen behoorlijk in te stellen die door
dpkg-architecture kunnen aangeleverd worden:
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
In ieder geval moet u nooit dpkg --print-architecture
gebruiken om architectuurinformatie te bekomen tijdens het bouwen van een
pakket.
- DPKG_DATADIR
- Indien deze variabele een waarde heeft, zal ze gebruikt worden als de
data-map van dpkg waarin zich de architectuurtabellen bevinden
(sinds dpkg 1.14.17). Staat standaard ingesteld op
«/usr/share/dpkg».
- DPKG_COLORS
- Stelt de kleurmodus in (sinds dpkg 1.18.5). Waarden die momenteel gebruikt
mogen worden zijn: auto (standaard), always en
never.
- DPKG_NLS
- Indien dit ingesteld is, zal het gebruikt worden om te beslissen over het
activeren van moedertaalondersteuning, ook gekend als
internationaliseringsondersteuning (of i18n) (sinds dpkg 1.19.0). Geldige
waarden zijn: 0 and 1 (standaard).
Alle lange commando- en optienamen kunnen slechts sinds dpkg
1.17.17 gebruikt worden.