dpkg-architecture - Architektur zum Paketbau setzen und
bestimmen
ÜBERSICHT
dpkg-architecture [Option …]
[Befehl]
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.
- -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.
- -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.
- -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)).
- 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.
- Debian-Architektur
- Die Debian-Architektur-Zeichenkette, die den binären Baum im
FTP-Archiv spezifiziert. Beispiele: i386, sparc, hurd-i386.
- 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
- Ein Debian-Architektur-Platzhalter ist eine spezielle
Architektur-Zeichenkette, die auf jede reale Architektur, die ein Teil
davon ist, passt. Die allgemeine Form ist ein Debian-Architektur-Tupel mit
vier oder weniger Elementen und bei dem mindestens eines any ist.
Fehlende Elemente des Tupels werden implizit als any vorangestellt
und daher sind die folgenden Tupel äquivalent:
Beispiele: linux-any, any-i386, hurd-any, eabi-any-any-arm,
musl-any-any.
- GNU-Systemtyp
- Eine Architekturspezifikationszeichenkette 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/.
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/share/dpkg/cputable
- Tabelle der bekannten CPU-Namen und Abbildungen auf ihre GNU-Namen.
Formatversion 1.0 (seit Dpkg 1.13.2).
- /usr/share/dpkg/ostable
- Tabelle der bekannten Betriebssystemnamen und Abbildungen auf ihre
GNU-Namen. Formatversion 2.0 (seit Dpkg 1.18.11).
- /usr/share/dpkg/tupletable
- Abbildung zwischen den Debian-Architektur-Tupeln und den
Debian-Architekturnamen. Formatversion 1.0 (seit Dpkg 1.18.11).
- /usr/share/dpkg/abitable
- Tabelle von Debian-Architektur-ABI-Attributs-Hinwegsetzung. Formatversion
2.0 (seit Dpkg 1.18.11).
- /usr/share/dpkg/architecture.mk
- Make-Steuerdateischnipsel, das alle Variablen, die
dpkg-architecture ausgibt, korrekt setzt und exportiert (seit Dpkg
1.16.1).
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-alpha
dpkg-architecture -amips -elinux-mips
Überprüfen, ob die aktuelle oder angegebene
Host-Architektur ein Linux-System ist:
dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any
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),alpha)
[…]
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/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.
- 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/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).
Alle langen Befehle und Optionennamen sind seit Dpkg 1.17.17
verfügbar.
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2023 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.