NAMN¶
dpkg-architecture - ställ in och bestäm arkitektur för
paket som byggs
SYNOPS¶
dpkg-architecture [
flagga...] [
åtgärd]
BESKRIVNING¶
dpkg-architecture innehåller en funktion för att
bestämma och ställa in bygg- och värdarkitekturerna
för att bygga paket.
Byggarkitekturen bestäms alltid av ett externt anrop till
dpkg(1)
och kan inte ställas in på kommandoraden.
Du kan ange värdarkitektur genom att ange en av, eller båda,
flaggorna
--host-arch och
--host-type. Förvalet
bestäms av ett externt anrop till
gcc(1), eller är
detsamma som byggarkitekturen varken
CC eller gcc är
tillgängliga. Det räcker att ange en av
--host-arch och
-host-type, värdet på den andra kommer ställas in
till ett fungerande förval. Det är faktiskt oftast bättre
att bara ange den ena eftersom
dpkg-architecture kommer varna dig om
ditt val inte överensstämmer med förvalet.
KOMMANDON¶
- -l, --list
- Skriv miljövariabler, en per rad, på formatet
VARIABEL=värde. Detta är förvald
åtgärd.
- -e, --equal arkitektur
- Kontrollera arkitektur för likhet (sedan dpkg 1.13.13). Det
jämför den aktuella eller angivna
Debian-värdarkitekturen mot arkitektur, för att se om
de är lika. Åtgärden expanderar inte jokertecken i
arkitekturer. Kommandot avslutar med status 0 om det är en
träff, 1 om det inte är en träff.
- -i, --is arkitektur-jokertecken
- Kontrollera arkitekturens identitet (sedan dpkg 1.13.13). Det
jämför den aktuella eller angivna
Debian-värdarkitekturen mot arkitektur-jokertecken efter att
ha expanderat det som ett arkitektur-jokertecken, för att se om de
är lika. Kommandot avslutar med status 0 om det är en
träff, 1 om det inte är en träff.
- -q, --query variabelnamn
- Skriv värdet på en enkel variabel.
- -s, --print-set
- Visar ett exportkommando. Detta kan användas för att
sätta miljövariabler med eval.
- -u, --print-unset
- Visar ett kommando liknande --print-unset men för att ta
bort värdet för alla variabler.
- -c, --command kommando
- Exekvera ett kommando i en miljö som har alla variabler
satta till det bestämda värdet.
- -L, --list-known
- Visar en lista över giltiga arkitekturnamn. Möjligen
begränsad av en eller flera av träffvalen
--match-wildcard, --match-bits eller --match-endian
(sedan dpkg 1.17.14).
- -?, --help
- Visar hjälpskärm och avslutar.
- --version
- Visar version och avslutar.
FLAGGOR¶
- -a, --host-arch arkitektur
- Sätter värd-Debianarkitekturen.
- -t, --host-type gnu-system-typ
- Sätter värd-GNU-systemtypen.
- -A, --target-arch arkitektur
- Sätt mål-Debianarkitekturen. Endast nödvändigt
för att bygga en korsverktygskedja, en som byggs på
byggarkitekturen och körs på målarkitekturen, och
för att bygga kod för målarkitekturen.
- -T, --target-type gnu-system-typ
- Sätt mål-GNU-systemtypen.
- -W, --match-wildcard arkitektur-jokertecken
- Begränsa arkitekturerna som visas med --list-known till en
som motsvarar det angivna arkitektur-jokertecknet (sedan dpkg
1.17.14).
- -B, --match-bits arkitektur-bitar
- Begränsa arkitekturerna som visas med --list-known till en
med angivet antal CPU-bitar (sedan dpkg 1.17.14). Antingen 32 eller
64.
- -E, --match-endian architecture-endian
- Begränsa arkitekturerna som visas med --list-known till en
som har angiven endian (sedan dpkg 1.17.14). Antingen little (liten
endian) eller big (stor endian).
- -f, --force
- Värden som sätts av befintliga miljövariabler med
samma namn som de som används av skriptet används (t.ex av
dpkg-architecture), såvida inte denna tvingande flagga
anges. Det gör det möjligt för användaren att
överstyra ett värde även om anropet till
dpkg-architecture är begravt djupt inuti ett annat skript
(till exempel dpkg-buildpackage(1)).
TERMINOLOGI¶
- byggmaskin
- Maskinen paketet byggs på.
- värdmaskin
- Maskinen paketet byggs för.
- målmaskin
- Maskinen kompilatorn bygger för.
- Debianarkitektur
- Debianarkitektursträngen, vilken anger binärträdet i
FTP-arkivet. Exempel: i386, sparc, hurd-i386.
- arkitektursökmönster
- Ett arkitektursökmönster är en speciell
arkitektursträng som matchar alla äkta arkitekturer som
finns i den. Den genella formen är
<kärna>-<cpu>. Exempel: linux-any, any-i386,
hurd-any.
- GNU-systemtyp
- En arkitekturspecificeringssträng består av två
delar, avdelade med bindestreck: processor och system. Exempel:
i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.
VARIABLER¶
Följande variabler sätts av
dpkg-architecture:
- DEB_BUILD_ARCH
- Debianarkitekturen för byggmaskinen.
- DEB_BUILD_ARCH_OS
- Debiansystemnamnet på byggmaskinen (sedan dpkg 1.13.2).
- DEB_BUILD_ARCH_CPU
- Debian-processornamnet för byggmaskinen (sedan dpkg 1.13.).
- DEB_BUILD_ARCH_BITS
- Pekarstorleken för byggmaskinen (i bitar; sedan dpkg 1.15.4).
- DEB_BUILD_ARCH_ENDIAN
- Endian för byggmaskinen (little / big; sedan dpkg 1.15.4).
- DEB_BUILD_GNU_CPU
- CPU-delen av DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- Systemdelen av DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_TYPE
- GNU-systemtypen för byggmaskinen.
- DEB_BUILD_MULTIARCH
- Den förtydligade GNU-systemtypen för byggmaskinen,
används för sökvägar i filsystemet.
- DEB_HOST_ARCH
- Debianarkitekturen för värdmaskinen.
- DEB_HOST_ARCH_OS
- Debiansystemnamnet för värdmaskinen (sedan dpkg
1.13.2).
- DEB_HOST_ARCH_CPU
- Debian-processornamnet för värdmaskinen (sedan dpkg
1.13.2).
- DEB_HOST_ARCH_BITS
- Pekarstorleken för värdmaskinen (i bitar; sedan dpkg
1.15.4).
- DEB_HOST_ARCH_ENDIAN
- Endian för värdmaskinen (little / big; sedan dpkg
1.15.4).
- DEB_HOST_GNU_CPU
- CPU-delen av DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- Systemdelen av DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_TYPE
- GNU-systemtypen för värdmaskinen.
- DEB_HOST_MULTIARCH
- Den förtydligade GNU-systemtypen för värdmaskinen,
används för sökvägar i filsystemet.
- DEB_TARGET_ARCH
- Debianarkitekturen för målmaskinen (sedan dpkg
1.17.14).
- DEB_TARGET_ARCH_OS
- Debiansystemnamnet för målmaskinen (sedan dpkg
1.17.14).
- DEB_TARGET_ARCH_CPU
- Debian-processornamnet för målmaskinen (sedan dpkg
1.17.14).
- DEB_TARGET_ARCH_BITS
- Pekarstorleken för målmaskinen (i bitar; sedan dpkg
1.17.14).
- DEB_TARGET_ARCH_ENDIAN
- Endian för målmaskinen (little / big; sedan dpkg
1.17.14).
- DEB_TARGET_GNU_CPU
- CPU-delen av DEB_TARGET_GNU_TYPE (sedan dpkg 1.17.14).
- DEB_TARGET_GNU_SYSTEM
- Systemdelen av DEB_TARGET_GNU_TYPE (sedan dpkg 1.17.14).
- DEB_TARGET_GNU_TYPE
- GNU-systemnamnet för målmaskinen (sedan dpkg 1.17.14).
- DEB_TARGET_MULTIARCH
- Den förtydligade GNU-systemtypen för målmaskinen,
används för sökvägar i filsystemet (sedan dpkg
1.17.14).
FILER¶
Arkitekturtabeller¶
Alla dessa filer måste finnas för att
dpkg-architecture
måste finnas. Deras placering kan överstyras vid körning
med miljövariabeln
DPKG_DATADIR.
- /usr/share/dpkg/cputable
- Tabell över kända processornamn och deras motsvarande
GNU-namn.
- /usr/share/dpkg/ostable
- Tabell över kända operativsystemsnamn och deras motsvarande
GNU-namn.
- /usr/share/dpkg/triplettable
- Tabell över Debianarkitekturtripplar och deras motsvarande
Debianarkitekturnamn.
Paketeringsstöd¶
- /usr/share/dpkg/architecture.mk
- Makefile-utklipp som sätter alla variabler dpkg-architecture
skriver (sedan dpkg 1.16.1):
EXEMPEL¶
dpkg-architecture godtar flaggan
-a och sänder den vidare
till
dpkg-architecture. Andra exempel:
- CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
- eval `dpkg-architecture -u`
Kontrollera om aktuell eller angiven arkitektur är samma en arkitektur:
- dpkg-architecture -elinux-alpha
- dpkg-architecture -amips -elinux-mips
Se om den aktuella eller angivna arkitekturen är ett Linuxsystem:
- dpkg-architecture -ilinux-any
- dpkg-architecture -ai386 -ilinux-any
Använda i debian/rules¶
Miljövariablerna som sätts av
dpkg-architecture
sänds till
debian/rules som make-variabler (se dokumentationen
för make). Du bör dock inte bero på dem eftersom detta
förhindrar manuella anrop till skriptet. Du bör istället
alltid initiera dem med
dpkg-architecture med
-q-flaggan.
Här är några exempel, vilka även visar hur du kan
förbättra stödet för korskompilering i ditt paket:
Hämta GNU-systemtypen och vidaresänd den till ./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)
Gör något endast för en specifik arkitektur:
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
eller, om du bara vill testa på processor- eller OS-typ, använd
variablerna
DEB_HOST_ARCH_CPU eller
DEB_HOST_ARCH_OS.
Observera att du även kan bero på att ett externt Makefile-utklipp
sätter alla variabler
dpkg-architecture kan
tillhandahålla:
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
Oavsett bör du aldrig använda
dpkg --print-architecture
för att hämta arkitekturinformation när paketet byggs.
ANTECKNINGAR¶
De långa kommando- och flaggnamn är endast tillgängliga
sedan dpkg 1.17.17.
SE ÄVEN¶
dpkg-buildpackage(1),
dpkg-cross(1).
ÖVERSÄTTNING¶
Peter Krefting och Daniel Nylander.