dpkg-architecture(1)

BEZEICHNUNG
dpkg-architecture - Architektur zum Paketbau setzen und bestimmen

Ü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 due Variable DEB_BUILD_ARCH (falls diese gesetzt und --force nicht angegeben ist) oder durch 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 (andernfalls wird die Variable DEB_HOST_ARCH verwandt, falls sie gesetzt und --force nicht angegeben ist). 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
    Zeigt die Umgebungsvariablen, eine pro Zeile, in dem Format VARIABLE=Wert. Dies ist die Standardaktion.

-e, --equal Architektur
    Überprüft 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üft 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
    Zeigt den Wert einer einzelnen Variablen an.

-s, --print-set
    Zeigt einen Export-Befehl. Dies kann dazu verwendet werden, um Umgebungsvariablen mittels der POSIX-Shell oder make eval zu setzen, abhängig vom Ausgabeformat.

-u, --print-unset
    Gibt ähnlich wie --print-set einen Export-Befehl aus, der alle Variablen löscht.

-c, --command Befehlszeichenkette
    Führt eine Befehlszeichenkette in einer Umgebung aus, in der alle Variablen auf die festgelegten Werte gesetzt sind.

    Falls die Befehlszeichenkette Shell-Metazeichen enthält, dann wird sie durch die System-Bourne-Shell aufgerufen.

-L, --list-known
    Gibt 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
    Zeigt einen Hinweis zum Aufruf und beendet das Programm.

--version
    Gibt die Version aus und beendet das Programm.

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-Bytereihenfolge
    Begrenzt die mit --list-known aufgeführten Architekturen auf solche mit der angegebenen Bytereihenfolge (seit Dpkg 1.17.14). Entweder little oder big.

--print-format Format
    Setzt das Ausgabeformat für --print-set und --print-unset (seit Dpkg 1.20.6), auf entweder shell (Vorgabe) oder make.

-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 oder dem Emulator, für den Code ausgeführt wird. Dies wird nur beim Bau einer Cross-Toolchain (oder einem Emulator) und zum Bau von Code für die Ziel-Architektur benötigt. Die Cross-Toolchain wird auf der Bauarchitektur gebaut (oder emuliert ausgeführt) und läuft dann auf der Host-Architektur und baut (oder emuliert) dann selbst Code für die Ziel-Architektur.

Debian-Architektur
    A Debian architecture describes a “machine” (considering it as an abstraction not necessarily tied to an actual physical device) representing a specific execution environment, including its CPU and attributes (such as endianness and bits), an operating system (usually a kernel, but other paradigms using userland services are possible) and its interfaces towards userland including the executable format and their ABI, and a libc library and its ABI.

    The special architecture all denotes an architecture independent execution environment, used for things such as shell and Perl scripts or documentation.

    A Debian architecture is used in binary package metadata and filenames (which specifies the binary tree in a package repository), and can appear in package relationships.

    An architecture must start with an alphanumeric character (“0-9a-zA-Z”), and then gets followed by alphanumeric or dash (“-”) characters.

    Examples: amd64, i386, sparc64, hurd-amd64, musl-linux-riscv64.

Debian-Architekturtupel
    Ein Debian-Architekturtupel ist eine vollqualifizierte Architektur mit allen Komponenten ausgeschrieben. Dies unterscheidet sich von der Debian-Architektur zumindest in der Weise, dass das ABI nicht eingebettet ist. Das aktuelle Tupel hat die Form ABI-Libc-OS-CPU.

    Beispiele: base-gnu-linux-amd64, eabihf-musl-linux-arm.

Debian-Architektur-Platzhalter
    A Debian architecture wildcard is a special architecture that acts as a pattern and will match any ”machine” architecture being part of it (except for all).

    The general form is a Debian architecture tuple with four or less elements, and with at least one of them being any. Missing elements of the tuple are prefixed implicitly as any, and thus the following pairs are equivalent:

    any-any-any-any = any
    any-any-os-any = os-any
    any-libc-any-any = libc-any-any

    Beispiele: linux-any, any-i386, hurd-any, eabi-any-any-arm, musl-any-any.

GNU-Systemtyp
    A GNU architecture specification string consisting of two parts separated by a hyphen: CPU and system.

    Der CPU-Anteil enthält niemals einen Bindestrich, während der Systemanteil einen Bindestrich enthalten könnte, um einen Kernel von seiner allgemeinen ABI zu trennen, wobei die allgemeine ABI sowohl Laufzeit- (wie Libc) als auch Ausführungs-ABI-Kennzeichner enthalten kann, die ohne Bindestrich aneinandergefügt sind.

    Examples: i586-linux-gnu, sparc64-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-gnu/.

VARIABLEN
Die folgenden Variablen werden von der Umgebung gelesen (außer --force wurde angegeben) und durch dpkg-architecture gesetzt (siehe den Abschnitt AUSDRÜCKE für eine Beschreibung des Benennungsschemas):

DEB_BUILD_ARCH
    Die Debian-Architektur der Baumaschine.

    Hinweis: Falls Sie kein Werkzeug bauen, das während des Baus ausgeführt werden muss, sind dies wahrscheinlich nicht die Variablen, die Sie suchen. Lesen Sie den Abschnitt "AUSDRÜCKE" für die Bedeutung dieser Ausdrücke.

DEB_BUILD_ARCH_ABI
    Der Debian-ABI-Name der Baumaschine. (Seit Dpkg 1.18.11).

DEB_BUILD_ARCH_LIBC
    Der Debian-Libc-Name der Baumaschine. (Seit Dpkg 1.18.11).

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 Bytereihenfolge der Baumaschine (little/big; seit Dpkg 1.15.4).

DEB_BUILD_GNU_CPU
    Der GNU-CPU-Teil von DEB_BUILD_GNU_TYPE.

DEB_BUILD_GNU_SYSTEM
    Der GNU-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, der für Dateisystempfade benutzt wird.

DEB_HOST_ARCH
    Die Debian-Architektur der Host-Maschine.

DEB_HOST_ARCH_ABI
    Der Debian-ABI-Name der Host-Maschine. (Seit Dpkg 1.18.11).

DEB_HOST_ARCH_LIBC
    Der Debian-Libc-Name der Host-Maschine. (Seit Dpkg 1.18.11).

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 Bytereihenfolge der Host-Maschine (little/big; seit Dpkg 1.15.4).

DEB_HOST_GNU_CPU
    Der GNU-CPU-Teil von DEB_HOST_GNU_TYPE.

DEB_HOST_GNU_SYSTEM
    Der GNU-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).

    Hinweis: Falls keine keine Cross-Werkzeugketten (oder Emulatoren) bauen, sind dies wahrscheinlich nicht die Variablen, die Sie suchen. Bitte lesen Sie den Abschnitt "AUSDRÜCKE" für die Bedeutung dieser Ausdrücke.

DEB_TARGET_ARCH_ABI
    Der Debian-ABI-Name der Ziel-Maschine. (Seit Dpkg 1.18.11).

DEB_TARGET_ARCH_LIBC
    Der Debian-Libc-Name der Ziel-Maschine. (Seit Dpkg 1.18.11).

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 Bytereihenfolge der Ziel-Maschine (little/big; seit Dpkg 1.17.14).

DEB_TARGET_GNU_CPU
    Der GNU-CPU-Teil von DEB_TARGET_GNU_TYPE. (Seit Dpkg 1.17.14).

DEB_TARGET_GNU_SYSTEM
    Der GNU-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. Diese Tabellen enthalten in der ersten Zeile ein Format-Versions-Pseudofeld, um ihre Version zu kennzeichnen, so dass Auswerteprogramme prüfen können, ob sie es verstehen. Beispiel: „# Version=1.0“.

/usr/pkg/share/dpkg/cputable
    Tabelle der bekannten CPU-Namen und Abbildungen auf ihre GNU-Namen. Formatversion 1.0 (seit Dpkg 1.13.2).

/usr/pkg/share/dpkg/ostable
    Tabelle der bekannten Betriebssystemnamen und Abbildungen auf ihre GNU-Namen. Formatversion 2.0 (seit Dpkg 1.18.11).

/usr/pkg/share/dpkg/tupletable
    Abbildung zwischen den Debian-Architektur-Tupeln und den Debian-Architekturnamen. Formatversion 1.0 (seit Dpkg 1.18.11).

/usr/pkg/share/dpkg/abitable
    Tabelle von Debian-Architektur-ABI-Attributs-Hinwegsetzung. Formatversion 2.0 (seit Dpkg 1.18.11).

  Paketierungsunterstützung

/usr/pkg/share/dpkg/architecture.mk
    Make-Steuerdateischnipsel, das alle Variablen, die dpkg-architecture ausgibt, korrekt setzt und exportiert (seit Dpkg 1.16.1).

BEISPIELE
dpkg-buildpackage akzeptiert die Option -a und gibt diese an dpkg-architecture weiter. Weitere Beispiele:

 CC=i386-gnu-gcc dpkg-architecture -c debian/rules build

 eval $(dpkg-architecture -u)

Überprüfen, ob die aktuelle oder angegebene Host-Architektur identisch zu einer Architektur ist:

 dpkg-architecture -elinux-arm64

 dpkg-architecture -ariscv64 -elinux-riscv64

Überprüfen, ob die aktuelle oder angegebene Host-Architektur ein Linux-System ist:

 dpkg-architecture -ilinux-any

 dpkg-architecture -aamd64 -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 mittels dpkg-architecture mit der Option -q 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),arm64)
   […]
 endif

oder, falls Sie nur den CPU- oder OS-Typ überprüfen müssen, verwenden Sie die Variablen DEB_HOST_ARCH_CPU oder DEB_HOST_ARCH_OS.

Um alle Variablen, die dpkg-architecture bereitstellen kann, korrekt zu setzen, können Sie auch extern ein Make-Steuerdateischnipsel verwenden:

 include /usr/pkg/share/dpkg/architecture.mk

 ifeq ($(DEB_HOST_ARCH),arm64)
   […]
 endif

Auf jeden Fall sollten Sie niemals dpkg --print-architecture verwenden, um die Architekturinformationen während eines Paketbaus zu erhalten.

UMGEBUNG

DPKG_DATADIR
    Falls dies gesetzt ist, wird es als Datenverzeichnis von dpkg verwandt, in dem sich die Architekturtabellen befinden (seit Dpkg 1.14.17). Standardmäßig „/usr/pkg/share/dpkg“.

DPKG_COLORS
    Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterstützten Werte sind: auto (Vorgabe), always und never.

DPKG_NLS
    Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language Support, auch als Unterstützung für Internationalisierung (oder i18n) bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten Werte sind: 0 und 1 (Vorgabe).

BEMERKUNGEN
Alle langen Befehle und Optionennamen sind seit Dpkg 1.17.17 verfügbar.

SIEHE AUCH
dpkg-buildpackage(1).

ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2025 von Helge Kreutzmann <debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und 2008 von Sven Joachim <svenjoac@gmx.de> angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer für die Kopierbedingungen. Es gibt KEINE HAFTUNG.