table of contents
dpkg-architecture(1) | dpkg suite | dpkg-architecture(1) |
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 antingen variabeln DEB_BUILD_ARCH om den är satt (och --force inte anges) eller genom ett externt anrop till dpkg(1) och kan inte väljas från kommandoraden.
Du kan ange värdarkitektur genom att ange en av, eller båda, flaggorna --host-arch och --host-type, annars används variabeln DEB_HOST_ARCH om den är satt (och --force inte anges). 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 POSIX-skalet eller make eval, beroende på utdataformatet.
- -u, --print-unset
- Visar ett kommando liknande --print-set men för att ta bort värdet för alla variabler.
- -c, --command kommandosträng
- Exekvera en kommandosträng i en miljö som har alla
variabler satta till det bestämda värdet.
Om kommandosträng innehåller skalmetatecken kommer det att anropas genom systemets bourne-skal.
- -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
- Ange värd-Debianarkitekturen.
- -t, --host-type gnu-system-typ
- Ange värd-GNU-systemtypen.
- -A, --target-arch arkitektur
- Ange mål-Debian-arkitekturen (sedan dpkg 1.17.14).
- -T, --target-type gnu-system-typ
- Ange mål-GNU-systemtypen (sedan dpkg 1.17.14).
- -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).
- --print-format format
- Väljer utdataformatet för --print-set och --print-unset (sedan dpkg 1.20.6), till antingen shell (förval) eller make.
- -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
- The machine the compiler is building for, or the emulator will run code for. This is only needed when building a cross-toolchain (or emulator), one that will be built on the build architecture, to be run on the host architecture, and that itself will build (or run emulated) code for the target architecture.
- Debianarkitektur
- The Debian architecture string, used in binary packages, which specifies
the binary tree in a package repository.
Examples: i386, sparc, hurd-i386.
- Debianarkitektur-tupel
- A Debian architecture tuple is the fully qualified architecture with all
its components spelled out. This differs with Debian architectures in that
at least the cpu component does not embed the abi. The
current tuple has the form abi-libc-os-cpu.
Examples: base-gnu-linux-amd64, eabihf-musl-linux-arm.
- Debianarkitektursökmönster
- Ett Debianarkitektursökmönster är en speciell arkitektursträng som matchar alla äkta arkitekturer som finns i den. Den genella formen är en Debianarkitektur-tupel med fyra eller färre element, och där åtminstone ett av dem är any. Saknade element i tupeln läggs till i början implicit som any, och följande par är därmet ekvivalenta:
Exempel: linux-any, any-i386, hurd-any, eabi-any-any-arm, musl-any-any.
- GNU-systemtyp
- An architecture specification string consisting of two parts separated by
a hyphen: CPU and system.
The CPU part never contains a hyphen, while the system part might itself contain a hyphen to separate a kernel from its general ABI, where the general ABI might contain both runtime (such as libc) and executable ABI specifiers joined without a hyphen.
Examples: i586-linux-gnu, sparc-linux-gnu, i686-gnu, x86_64-netbsd.
- multiark-triplett
- The clarified GNU system type, used for filesystem paths. This triplet
does not change even when the baseline ISA gets bumped, so that the
resulting paths are stable over time. The only current difference with the
GNU system type is that the CPU part for i386 based systems is always
i386.
Examples: i386-linux-gnu, x86_64-linux-gnu. Example paths: /lib/powerpc64le-linux-gnu/, /usr/lib/i386-kfreebsd-gnu/.
VARIABLER¶
Följande variabler läses från miljön (med mindre --force har angivits) och sätts av dpkg-architecture (se stycket TERMINOLOGI för en beskrivning av hur namngivningen är uppbyggd):
- DEB_BUILD_ARCH
- Debianarkitekturen för byggmaskinen.
Note: If you are not building tools that need to run during the build, these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.
- DEB_BUILD_ARCH_ABI
- Debian-ABI-namnet för byggmaskinen (sedan dpkg 1.18.11).
- DEB_BUILD_ARCH_LIBC
- Debian-libc-namnet för byggmaskinen (sedan dpkg 1.18.11).
- 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.2).
- 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
- GNU CPU-delen av DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- GNU-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_ABI
- Debian-ABI-namnet för värdmaskinen (sedan dpkg 1.18.11).
- DEB_HOST_ARCH_LIBC
- Debian-libc-amnet för värdmaskinen (sedan dpkg 1.18.11).
- 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
- GNU-processordelen av DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- GNU-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 (sedan dpkg 1.16.0).
- DEB_TARGET_ARCH
- Debianarkitekturen för målmaskinen (sedan dpkg 1.17.14).
Note: If you are not building cross-toolchains (or emulators), these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.
- DEB_TARGET_ARCH_ABI
- Debian-ABI-namnet för målmaskinen (sedan dpkg 1.18.11).
- DEB_TARGET_ARCH_LIBC
- Debian-libc-namnet för målmaskinen (sedan dpkg 1.18.11).
- 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
- GNU CPU-delen av DEB_TARGET_GNU_TYPE (sedan dpkg 1.17.14).
- DEB_TARGET_GNU_SYSTEM
- GNU-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 ska fungera. Deras placering kan överstyras vid körning med miljövariabeln DPKG_DATADIR. Tabellerna innehåller ett pseudo-fält med format-Version på första raden för att ange format, så att tolkar kan kontrollera om de förstår det, såsom "# Version=1.0".
- /usr/share/dpkg/cputable
- Tabell över kända processornamn och deras motsvarande GNU-namn. Formatversion 1.0 (sedan dpkg 1.13.2).
- /usr/share/dpkg/ostable
- Tabell över kända operativsystemsnamn och deras motsvarande GNU-namn. Formatversion 2.0 (sedan dpkg 1.18.11).
- /usr/share/dpkg/tupletable
- Mappning mellan Debianarkitektur-tuplar och Debianarkitekturnamn. Formatversion 1.0 (sedan dpkg 1.18.11).
- /usr/share/dpkg/abitable
- Tabell över Debianarkitektur-ABI-attributöverstyrningar. Formatversion 2.0 (sedan dpkg 1.18.11).
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 värdarkitektur är identisk till en arkitektur:
dpkg-architecture -elinux-arm64 dpkg-architecture -ariscv64 -elinux-riscv64
Se om den aktuella eller angivna arkitekturen är ett Linuxsystem:
dpkg-architecture -aamd64 -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),arm64) [...] 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:
ifeq ($(DEB_HOST_ARCH),arm64) [...] endif
Oavsett bör du aldrig använda dpkg --print-architecture för att hämta arkitekturinformation när paketet byggs.
MILJÖVARIABLER¶
- DPKG_DATADIR
- Om satt, används som datakatalog för dpkg, där arkitekturtabellerna ligger (sedan dpkg 1.14.17). Förval är ”/usr/share/dpkg”.
- DPKG_COLORS
- Väljer färgläge (sedan dpkg 1.18.5). För närvarande godtas följande värden: auto (förval), always och never.
- DPKG_NLS
- Om satt, används för att bestämma om lokalt språkstöd ska aktiveras, även känt som internationaliseringsstöd (eller i18n) (sedan dpkg 1.19.0). Tillåtna värden är: 0 och 1 (förval).
ANTECKNINGAR¶
De långa kommando- och flaggnamnen är endast tillgängliga sedan dpkg 1.17.17.
SE ÄVEN¶
ÖVERSÄTTNING¶
Peter Krefting och Daniel Nylander.
2025-03-09 | 1.22.18 |