Scroll to navigation

dpkg-architecture(1) dpkg-verktygen 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 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.
2013-03-28 Debianprojektet