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 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. 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
- Geef de omgevingsvariabelen, per regel één, weer volgens de
indeling VARIABELE=waarde. Dit is de standaardactie.
- -e, --equal
architectuur
- Ga na 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
- Ga na 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
- Toon de waarde van één enkele variabele.
- -s,
--print-set
- Toon een export-commando. Dit kan gebruikt worden om de
omgevingsvariabelen met behulp van eval in te stellen.
- -u,
--print-unset
- Toon een commando dat vergelijkbaar is met --print-unset, maar om
alle variabelen leeg te maken.
- -c, --command
commando-tekenreeks
- Voer een commando-tekenreeks uit in een omgeving waarin alle
variabelen ingesteld zijn op de vastgelegde waarde.
- -L,
--list-known
- Toon een lijst van geldige architectuurbenamingen. Kan eventueel ingeperkt
worden met een of meer van de vergelijkingsopties --match-wildcard,
--match-bits of --match-endian (sinds dpkg 1.17.14).
- -?, --help
- Toon info over het gebruik en sluit af.
- --version
- Toon de versie en sluit af.
- -a, --host-arch
architectuur
- Stel de Debian-architectuur in voor de host.
- -t, --host-type
gnu-systeemtype
- Stel het GNU-systeemtype in voor de host.
- -A, --target-arch
architectuur
- Stel de Debian-architectuur in voor het doel (sinds dpkg 1.17.14).
- -T, --target-type
gnu-systeemtype
- Stel het GNU-systeemtype in voor het doel (sinds dpkg 1.17.14).
- -W, --match-wildcard
architectuurjokerteken
- Beperk de architecturen die door --list-known weergegeven worden
tot die welke beantwoorden aan het opgegeven architectuurjokerteken (sinds
dpkg 1.17.14).
- -B, --match-bits
architectuur-bits
- Beperk de architecturen die door --list-known weergegeven worden
tot die met de opgegeven CPU-bits (sinds dpkg 1.17.14). Ofwel 32
ofwel 64.
- -E, --match-endian
architectuur-bytevolgorde
- Beperk de architecturen die door --list-known weergegeven worden
tot die met de opgegeven bytevolgorde (endianness) (sinds dpkg 1.17.14).
Ofwel little ofwel big.
- -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. Dit is enkel nodig bij het bouwen
van een kruisgereedschapskist (cross-toolchain), een gereedschapskist die
gebouwd zal worden op de bouwarchitectuur om uitgevoerd te worden op de
hostarchitectuur en code moet bouwen 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:
any-any-any-any = any
any-any-os-any = os-any
any-libc-any-any = libc-any-any
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`
Verifieer of de huidige of opgegeven hostarchitectuur gelijk is
aan een architectuur:
- dpkg-architecture -elinux-alpha
- dpkg-architecture -amips -elinux-mips
Verifieer 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.