ÜBERSICHT
dpkg-architecture [Option …] [Befehl]
BESCHREIBUNG
dpkg-architecture stellt eine Möglichkeit bereit, die Rechner-Architektur für den Paketbau zu bestimmen und zu setzen.Die Bau-Architektur wird immer über einen externen Aufruf an dpkg(1) bestimmt und kann nicht auf der Befehlszeile gesetzt werden.
Sie können die Host-Architektur (Wirt-Architektur) spezifizieren, indem Sie eine oder beide der Optionen --host-arch oder --host-type verwenden. Der Standardwert wird über einen externen Aufruf an gcc(1) ermittelt oder ist identisch mit der Bauarchitektur, falls sowohl CC als auch Gcc nicht verfügbar sind. Einer von --host-arch oder --host-type ist ausreichend, der Wert des anderen wird auf einen brauchbaren Wert gesetzt. Tatsächlich ist es oft besser, nur einen der beiden anzugeben, da dpkg-architecture Sie warnen wird, falls Ihre Wahl nicht mit dem Standardwert übereinstimmt.
BEFEHLE
- -l, --list
- Zeige die Umgebungsvariablen, eine pro Zeile, in dem Format VARIABLE=Wert. Dies ist die Standardaktion.
- -e, --equal Architektur
-
Überprüfe auf Gleichheit der Architekturen (seit Dpkg 1.13.13). Es prüft die
aktuelle oder angegebene Debian-Host-Architektur mit Architektur auf
Gleichheit. Diese Aktion expandiert nicht die Architektur-Platzhalter
(Wildcards). Der Befehl beendet sich mit einem Exit-Status von 0, falls eine
Übereinstimmung besteht, andernfalls mit 1.
- -i, --is Architektur-Platzhalter
- Überprüfe auf Gleichheit der Architekturen (seit Dpkg 1.13.13). Es prüft die aktuelle oder angegebene Debian-Host-Architektur mit Architektur-Platzhalter, nachdem dieser zu einem Architektur-Platzhalter expandiert wurde und prüft, ob sie passen. Der Befehl beendet sich mit einem Exit-Status von 0, falls eine Übereinstimmung besteht, andernfalls mit 1.
- -q, --query Variablenname
- Zeige den Wert einer einzelnen Variablen an.
- -s, --print-set
- Zeige einen Export-Befehl. Dies kann dazu verwendet werden, um Umgebungsvariablen mittels eval zu setzen.
- -u, --print-unset
- Ähnlich wie --print-unset, gebe einen Export-Befehl aus, der alle Variablen löscht.
- -c, --command Befehl
- Führe einen Befehl in einer Umgebung aus, in der alle Variablen auf die festgelegten Werte gesetzt sind.
- -L, --list-known
- Gib eine Liste von gültigen Architekturnamen aus. Möglicherweise durch eine oder mehrere der Abgleich-Optionen --match-wildcard, --match-bits oder --match-endian eingeschränkt (seit Dpkg 1.17.14).
- -?, --help
- Zeige den Bedienungshinweis und beende.
- --version
- Gebe die Version aus und beende sich.
OPTIONEN
- -a, --host-arch Architektur
- Setzt die Debian-Host-Architektur.
- -t, --host-type GNU-Systemtyp
- Setzt den Host-GNU-Systemtyp.
- -A, --target-arch Architektur
- Setzt die Ziel-Debian-Architektur (seit Dpkg 1.17.14).
- -T, --target-type GNU-Systemtyp
- Setzt den Ziel-GNU-Systemtyp (seit Dpkg 1.17.14).
- -W, --match-wildcard Architektur-Platzhalter
- Begrenzt die mit --list-known aufgeführten Architekturen auf solche, die auf den angegebenen Architektur-Platzhalter passen (seit Dpkg 1.17.14).
- -B, --match-bits Architektur-Bits
- Begrenzt die mit --list-known aufgeführten Architekturen auf solche mit den angegebenen CPU-Bits (seit Dpkg 1.17.14). Entweder 32 oder 64.
- -E, --match-endian Architektur-Endianness
- Begrenzt die mit --list-known aufgeführten Architekturen auf solche mit der angegebenen Endianness (seit Dpkg 1.17.14). Entweder little oder big.
- -f, --force
- Existierende Umgebungsvariablen mit dem gleichen Namen wie vom Skript verwendet werden nicht überschrieben (d.h. sie werden von dpkg-architecture verwendet), es sei denn, die »force«-Markierung ist gesetzt. Dies erlaubt es dem Benutzer einen Wert zu überschreiben, selbst wenn der Aufruf von dpkg-architecture tief in einem anderen Skript versteckt ist (beispielsweise dpkg-buildpackage(1)).
AUSDRÜCKE
- Baumaschine
- Die Maschine, auf der das Paket gebaut wird.
- Host-Maschine
- Die Maschine, für die das Paket gebaut ist.
- Ziel-Maschine
- Die Maschine, für die der Compiler baut. Dies wird nur beim Bau einer Cross-Toolchain und zum Bau von Code für die Ziel-Architektur benötigt. Die Cross-Toolchain wird auf der Bauarchitektur gebaut und läuft dann auf der Host-Architektur.
- Debian-Architektur
- Die Debian-Architektur-Zeichenkette, die den binären Baum im FTP-Archiv spezifiziert. Beispiele: i386, sparc, hurd-i386.
- Debian-Architektur-Platzhalter
- Ein Debian-Architektur-Platzhalter ist eine spezielle Architektur-Zeichenkette, die auf jede reale Architektur, die ein Teil davon ist, passt. Die allgemeine Form ist <Kern>-<CPU>. Beispiele: linux-any, any-i386, hurd-any.
- GNU-Systemtyp
- Eine Architektur-Spezifikations-Zeichenkette besteht aus zwei, durch einen Bindestrich getrennten Teilen: CPU und System. Beispiele: i586-linux-gnu, sparc-linux-gnu, i686-gnu, x86_64-netbsd.
- Multiarch-Tripel
- Der bereinigte GNU-Systemtyp, wird für Dateipfade verwandt. Dieses Tripel ändert sich auch nicht, wenn das zugrundeliegende ISA erhöht wird, so dass die daraus resultierenden Pfade dauerhaft stabil bleiben. Derzeit ist der einzige Unterschied zum GNU-Sytemtyp, dass der CPU-Anteil für i386-basierte Systeme immer i386 lautet. Beispiele: i386-linux-gnu, x86_64-linux-gnu. Beispielpfade: /lib/powerpc64le-linux-gnu/, /usr/lib/i386-kfreebsd-gnu/.
VARIABLEN
Die folgenden Variablen werden von dpkg-architecture gesetzt:- DEB_BUILD_ARCH
- Die Debian-Architektur der Baumaschine.
- DEB_BUILD_ARCH_OS
- Der Debian-Systemname der Baumaschine. (Seit Dpkg 1.13.2).
- DEB_BUILD_ARCH_CPU
- Der Debian-CPU-Name der Baumaschine. (Seit Dpkg 1.13.2).
- DEB_BUILD_ARCH_BITS
- Die Zeigergröße der Baumaschine in Bits. (Seit Dpkg 1.15.4).
- DEB_BUILD_ARCH_ENDIAN
- Die Endianness der Baumaschine (little/big; seit Dpkg 1.15.4).
- DEB_BUILD_GNU_CPU
- Der CPU-Teil von DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- Der System-Teil von DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_TYPE
- Der GNU-Systemtyp der Baumaschine.
- DEB_BUILD_MULTIARCH
- Der klargestellte GNU-Systemtyp der Baumaschine, wird für Dateisystempfade benutzt.
- DEB_HOST_ARCH
- Die Debian-Architektur der Host-Maschine.
- DEB_HOST_ARCH_OS
- Der Debian-Systemname der Host-Maschine. (Seit Dpkg 1.13.2).
- DEB_HOST_ARCH_CPU
- Der Debian-CPU-Name der Host-Maschine. (Seit Dpkg 1.13.2).
- DEB_HOST_ARCH_BITS
- Die Zeigergröße der Host-Maschine in Bits. (Seit Dpkg 1.15.4).
- DEB_HOST_ARCH_ENDIAN
- Die Endianness der Host-Maschine (little/big; seit Dpkg 1.15.4).
- DEB_HOST_GNU_CPU
- Der CPU-Teil von DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- Der System-Teil von DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_TYPE
- Der GNU-Systemtyp der Host-Maschine.
- DEB_HOST_MULTIARCH
- Der klargestellte GNU-Systemtyp der Host-Maschine, wird für Dateisystempfade benutzt. (Seit Dpkg 1.16.0).
- DEB_TARGET_ARCH
- Die Debian-Architektur der Ziel-Maschine (seit Dpkg 1.17.14).
- DEB_TARGET_ARCH_OS
- Der Debian-Systemname der Ziel-Maschine. (Seit Dpkg 1.17.14).
- DEB_TARGET_ARCH_CPU
- Der Debian-CPU-Name der Ziel-Maschine. (Seit Dpkg 1.17.14).
- DEB_TARGET_ARCH_BITS
- Die Zeigergröße der Ziel-Maschine in Bits. (Seit Dpkg 1.17.14).
- DEB_TARGET_ARCH_ENDIAN
- Die Endianness der Ziel-Maschine (little/big; seit Dpkg 1.17.14).
- DEB_TARGET_GNU_CPU
- Der CPU-Teil von DEB_TARGET_GNU_TYPE. (Seit Dpkg 1.17.14).
- DEB_TARGET_GNU_SYSTEM
- Der System-Teil von DEB_TARGET_GNU_TYPE. (Seit Dpkg 1.17.14).
- DEB_TARGET_GNU_TYPE
- Der GNU-Systemtyp der Ziel-Maschine. (Seit Dpkg 1.17.14).
- DEB_TARGET_MULTIARCH
- Der klargestellte GNU-Systemtyp der Ziel-Maschine, wird für Dateisystempfade benutzt. (Seit Dpkg 1.17.14).
DATEIEN
Architekturtabellen
Alle diese Dateien müssen vorhanden sein, damit dpkg-architecture funktioniert. Ihr Ort kann zur Laufzeit mit der Umgebungsvariable DPKG_DATADIR überschrieben werden.- /usr/share/dpkg/cputable
- Tabelle der bekannten CPU-Namen und Abbildungen auf ihre GNU-Namen.
- /usr/share/dpkg/ostable
- Tabelle der bekannten Betriebssystemnamen und Abbildungen auf ihre GNU-Namen.
- /usr/share/dpkg/triplettable
- Abbildung zwischen den Debian-Architektur-Tripletts und den Debian-Architekturnamen.
- /usr/share/dpkg/abitable
- Tabelle von Debian-Architektur-ABI-Attributs-Außerkraftsetzungen.
Paketierungsunterstützung
- /usr/share/dpkg/architecture.mk
- Makefile-Schnipsel, das alle Variablen, die dpkg-architecture ausgibt, korrekt setzt und exportiert (seit Dpkg 1.16.1).
BEISPIELE
dpkg-buildpackage akzeptiert die -a-Option und gibt dies an dpkg-architecture weiter. Weitere Beispiele:- CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
- eval `dpkg-architecture -u`
Überprüfe, ob die aktuelle oder angegebene Host-Architektur identisch zu einer Architektur ist:
- dpkg-architecture -elinux-alpha
- dpkg-architecture -amips -elinux-mips
Überprüfe, ob die aktuelle oder angegebene Host-Architektur ein Linux-System ist:
- dpkg-architecture -ilinux-any
- dpkg-architecture -ai386 -ilinux-any
Verwendung in debian/rules
Die Umgebungsvariablen, die von dpkg-architecture gesetzt werden, werden an debian/rules als Make-Variablen weitergegeben (lesen Sie hierzu die Make-Dokumentation). Allerdings sollten Sie sich nicht auf diese verlassen, da damit der manuelle Aufruf des Skripts verhindert wird. Stattdessen sollten Sie sie immer mit dpkg-architecture mit der -q-Option initialisieren. Hier sind einige Beispiele, die auch zeigen, wie sie die Cross-Kompilierungs-Unterstützung in Ihrem Paket verbessern können:Ermitteln des GNU-Systemtyps und dessen Weiterleitung an ./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)
Etwas nur für eine bestimmte Architektur erledigen:
-
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq ($(DEB_HOST_ARCH),alpha) […] endif
oder, falls Sie nur den CPU- oder OS-Typ überprüfen müssen, verwenden Sie die DEB_HOST_ARCH_CPU- oder DEB_HOST_ARCH_OS-Variablen.
Beachten Sie, dass Sie sich auch auf ein externes Makefile-Schnipsel abstützen können, um alle Variablen, die dpkg-architecture bereitstellen kann, korrekt zu setzen:
-
include /usr/share/dpkg/architecture.mk ifeq ($(DEB_HOST_ARCH),alpha) […] endif
Auf jeden Fall sollten Sie niemals dpkg --print-architecture verwenden, um die Architekturinformationen während eines Paketbaus zu erhalten.