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 einen externen Aufruf an
dpkg(1)
bestimmt und kann nicht auf der Kommandozeile gesetzt werden.
Sie können die Host-Architektur (Wirt-Architektur) spezifizieren, indem Sie
eine oder beide der Optionen
-a oder
-t 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
-a oder
-t 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
- Zeige die Umgebungsvariablen, eine pro Zeile, in dem Format
VARIABLE=Wert. Dies ist die Standardaktion.
- -eDebian-Architektur
- Überprüfe auf Gleichheit der Architekturen.
Standardmäßig wird Debian-Architektur gegen die aktuelle
Debian-Architektur auf dem Host geprüft. 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.
- -iArchitektur-Platzhalter
- Überprüfe die Identität einer Architektur,
indem Architektur-Platzhalter als ein Architektur-Platzhalter
expandiert und mit der aktuellen Debian-Architektur verglichen wird. Der
Befehl endet mit einem Exit-Status von 0, falls eine Übereinstimmung
gefunden wurde, ansonsten mit 1.
- -qVariablenname
- Zeige den Wert einer einzelnen Variablen an.
- -s
- Zeige einen Export-Befehl. Dies kann dazu verwendet werden,
um Umgebungsvariablen mittels eval zu setzen.
- -u
- Ähnlich wie -s, gebe einen Export-Befehl aus,
der alle Variablen löscht.
- -c Befehl
- Führe einen Befehl in einer Umgebung aus, in
der alle Variablen auf die festgelegten Werte gesetzt sind.
- -L
- Zeige eine Liste von gültigen Architekturnamen.
- -?, --help
- Zeige den Bedienungshinweis und beende.
- --version
- Gebe die Version aus und beende sich.
OPTIONEN¶
- -aDebian-Architektur
- Setze die Debian-Architektur.
- -tGNU-Systemtyp
- Setze den GNU-Systemtyp.
- -f
- 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.
- Debian-Architektur
- Die Debian-Architektur-Zeichenkette, die den binären
Baum im FTP-Archiv spezifiziert. Beispiele: i386, sparc, hurd-i386.
- Architektur-Platzhalter
- Ein 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: i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.
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.
- DEB_BUILD_ARCH_CPU
- Der Debian-CPU-Name der Baumaschine.
- DEB_BUILD_ARCH_BITS
- Die Zeigergröße der Baumaschine in Bits.
- DEB_BUILD_ARCH_ENDIAN
- Die Endianness der Baumaschine (little/big).
- 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.
- DEB_HOST_ARCH_CPU
- Der Debian-CPU-Name der Host-Maschine.
- DEB_HOST_ARCH_BITS
- Die Zeigergröße der Host-Maschine in Bits.
- DEB_HOST_ARCH_ENDIAN
- Die Endianness der Host-Maschine (little/big).
- 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.
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)
[?]
configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
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.
RÜCKWÄRTSKOMPATIBILITÄT¶
Das Makefile-Schnipsel /usr/share/dpkg/architecture.mk wird von dpkg-dev seit
Version 1.16.1 bereitgestellt.
Die Variablen DEB_*_ARCH_BITS und DEB_*_ARCH_ENDIAN wurden in dpkg-dev 1.15.4
eingeführt. Werden sie in
debian/rules verwandt, benötigen
sie daher eine Bauabhängigkeit von dpkg-dev (>= 1.15.4).
Die Variablen DEB_HOST_ARCH_CPU und DEB_HOST_ARCH_OS wurden in dpkg-dev 1.13.2
eingeführt.
Die
-e- und
-i-Optionen wurden erst in relativ neuen Versionen von
dpkg-architecture eingeführt (seit Dpkg 1.13.13).
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 eine Architektur identisch zu der aktuellen Architektur
oder einer übergebenen ist:
- dpkg-architecture -elinux-alpha
- dpkg-architecture -amips -elinux-mips
Überprüfe, ob die aktuelle oder eine mit -a übergebene
Architektur Linux-Systeme sind:
- dpkg-architecture -ilinux-any
- dpkg-architecture -ai386 -ilinux-any
DATEIEN¶
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.
ÜBERSETZUNG¶
Die deutsche Übersetzung wurde 2004, 2006-2015 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.
SIEHE AUCH¶
dpkg-buildpackage(1),
dpkg-cross(1).