dpkg-architecture - Fixer et déterminer l'architecture pour
la construction d'un paquet
dpkg-architecture [option...] [commande]
dpkg-architecture aide à déterminer et
à fixer l'architecture de construction et l'architecture hôte
pour la création d'un paquet.
L'architecture de construction est toujours
déterminée par soit la variable DEB_BUILD_ARCH si elle
est définie (et que --force n'a pas été
spécifié) ou par un appel externe à dpkg(1).
Elle ne peut pas être spécifiée en ligne de
commande.
Vous pouvez spécifier une architecture hôte en
utilisant une des options --host-arch et --host-type (ou les
deux), autrement la variable DEB_HOST_ARCH est utilisée si
elle est définie (et que --force n'a pas été
spécifié). Par défaut, la valeur est
déterminée par un appel à gcc(1), ou en
utilisant l'architecture de construction si CC ou gcc ne sont pas
disponibles. Utiliser une seule des options --host-arch et
--host-type est suffisant, la valeur de l'une est utilisée
comme valeur par défaut de l'autre. Bien sûr, il est
préférable de n'en préciser qu'une seule, puisque
dpkg-architecture affichera un avertissement si le choix ne
correspond pas à la valeur par défaut.
- -l, --list
- Afficher les variables d'environnement, une par ligne, en utilisant le
format VARIABLE=valeur. C'est l'action par défaut.
- -e, --equal
architecture
- Vérifier l'égalité d'architectures (depuis
dpkg 1.13.13). Cela compare l'architecture Debian en cours (ou
celle spécifiée) à architecture afin de
vérifier leur égalité. Cette action ne gère
pas les architectures joker. La commande quitte avec un code de retour de
0 si l'architecture correspond et de 1 dans le cas
contraire.
- -i, --is
architecture-joker
- Vérifier l'identité des architectures (depuis
dpkg 1.13.13). Cela compare l'architecture Debian en cours (ou
celle spécifiée) à architecture-joker
(après expansion de celle-ci) afin de vérifier leur
correspondance. La commande quitte avec un code de retour de 0 si
l'architecture correspond et de 1 dans le cas contraire.
- -q, --query
nom-de-variable
- Afficher la valeur d'une seule variable.
- -s,
--print-set
- Produire une commande d'exportation, qui peut être utilisée
pour positionner les variables d'environnement utilisant le shell
POSIX ou « make eval », selon le format
de sortie.
- -u,
--print-unset
- Afficher une commande similaire à celle produite par
--print-set, mais pour supprimer toutes les variables.
- -c, --command
chaîne-de-commande
- Exécuter une chaîne-de-commande dans un environnement
où toutes les variables sont positionnées aux valeurs
spécifiées.
- -L,
--list-known
- Afficher une liste des architectures valables. Elle peut être
restreinte par une ou plusieurs des options correspondantes
--match-wildcard, --match-bits ou --match-endian
(depuis dpkg 1.17.14).
- -?, --help
- Afficher un message d'aide puis quitter.
- --version
- Afficher le numéro de version puis quitter.
- -a, --host-arch
architecture
- Définir l'architecture Debian en cours.
- -t, --host-type
type-de-système-gnu
- Définir le type de système GNU en cours.
- -A, --target-arch
architecture
- Définir l'architecture Debian de la cible (depuis
dpkg 1.17.14).
- -T, --target-type
type-de-système-gnu
- Définir le type de système GNU de la cible (depuis
dpkg 1.17.14).
- -W, --match-wildcard
architecture-joker
- Restreindre les architectures listées par --list-known
à celles correspondant à l'architecture-joker (depuis
dpkg 1.17.14).
- -B, --match-bits
bits-de-l'architecture
- Restreindre les architectures listées par --list-known
à celles employant un CPU disposant du nombre de bits
indiqués (depuis dpkg 1.17.14). Soit 32, soit
64.
- -E, --match-endian
boutisme-d'architecture
- Restreindre les architectures listées par --list-known
à celles correspondant au boutisme spécifié (depuis
dpkg 1.17.14). Soit little, soit big.
- --print-format
format
- Configurer le format de sortie de --print-set et
--print-unset (depuis dpkg 1.20.6), pour shell (par
défaut) ou make.
- -f, --force
- Les valeurs positionnées par les variables d'environnement ayant le
même nom que celles utilisées par les scripts sont prises en
compte (c'est-à-dire utilisées par
dpkg-architecture), sauf si cette option est présente. Cela
permet à un utilisateur de surcharger une valeur même
lorsque l'appel à dpkg-architecture est inclus dans un autre
script (par exemple dpkg-buildpackage(1)).
- Machine de
construction
- Machine sur laquelle le paquet est construit.
- Machine
hôte
- Machine pour laquelle le paquet est construit.
- Machine
cible
- La machine pour laquelle le compilateur construit ou pour laquelle
l'émulateur exécutera le code. Cela est nécessaire
uniquement lors de la construction d'une chaîne d'outils de
compilation croisée qui sera construite sur l'architecture de
construction, pour être exécutée sur l'architecture
hôte, afin de construire du code (ou d'exécuter du code
émulé) pour l'architecture cible.
- Architecture
Debian
- Chaîne de caractères de l'architecture Debian qui
spécifie l'emplacement dans l'archive FTP. Par exemple :
i386, sparc, hurd-i386.
- N-uplet d'architecture
Debian
- Un n-uplet d'architecture Debian est l'architecture pleinement
qualifiée avec tous ses composants énoncés. C'est
différent des architectures Debian en ce que le composant
processeur n'intègre pas l'ABI. Le n-uplet actuel a
la forme ABI-libc-os-processeur.
Exemples : base-gnu-linux-amd64, eabihf-musl-linux-arm.
- Architecture
Debian joker
- Une architecture Debian joker est une architecture spéciale qui
correspond à toutes les architectures réelles qui en font
partie. Il est en général de la forme d'un n-uplet
d'architecture Debian avec quatre éléments ou moins dont au
moins l'un d'eux est any. Les éléments manquants du
n-uplet sont préfixés implicitement par any, et donc
les paires suivantes sont équivalentes.
Exemples : linux-any, any-i386, hurd-any, eabi-any-any-arm,
musl-any-any.
- Type de système
GNU
- Chaîne de caractères définissant l'architecture et
constituée de deux parties séparées par un
tiret : processeur et système. Par exemple :
i586-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.
- n-uplet multiarchitecture
- Type en clair de système GNU, utilisé pour les chemins du
système de fichiers. Ce n-uplet ne change pas même quand
l'ISA de base est incrémentée, de sorte que les chemins
résultants sont stables dans la durée. La seule
différence actuelle avec le type du système GNU est que la
partie processeur pour les systèmes basés sur l'i386 est
toujours i386. Exemples : i386-linux-gnu, x86_64-linux-gnu. Exemple
de chemins : /lib/powerpc64le-linux-gnu/,
/usr/lib/i386-kfreebsd-gnu/.
Les variables suivantes sont lues à partir de
l'environnement (à moins que --force n'ait été
spécifié) et sont positionnées par
dpkg-architecture (voir la section TERMS pour une description
du schéma de nommage) :
- DEB_BUILD_ARCH
- Architecture Debian de la machine de construction.
- DEB_BUILD_ARCH_ABI
- Nom de l'ABI Debian de la machine de construction (depuis
dpkg 1.18.11).
- DEB_BUILD_ARCH_LIBC
- Nom de la libc Debian de la machine de construction (depuis
dpkg 1.18.11).
- DEB_BUILD_ARCH_OS
- Nom du système Debian de la machine de construction (depuis
dpkg 1.13.2).
- DEB_BUILD_ARCH_CPU
- Nom de processeur Debian de la machine de construction (depuis
dpkg 1.13.2).
- DEB_BUILD_ARCH_BITS
- Taille de pointeur de la machine de construction (en bits, depuis
dpkg 1.15.4).
- DEB_BUILD_ARCH_ENDIAN
- Boutisme de la machine de construction (petit ou gros, depuis
dpkg 1.15.4).
- DEB_BUILD_GNU_CPU
- Partie CPU GNU de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_SYSTEM
- Partie système GNU de DEB_BUILD_GNU_TYPE.
- DEB_BUILD_GNU_TYPE
- Type de système GNU de la machine de construction.
- DEB_BUILD_MULTIARCH
- Le type en clair de système GNU de la machine de construction,
utilisé pour les chemins du système de fichiers (depuis
dpkg 1.16.0).
- DEB_HOST_ARCH
- Architecture Debian de la machine hôte.
- DEB_HOST_ARCH_ABI
- Nom de l'ABI Debian de la machine hôte (depuis
dpkg 1.18.11).
- DEB_HOST_ARCH_LIBC
- Nom de la libc Debian de la machine hôte (depuis
dpkg 1.18.11).
- DEB_HOST_ARCH_OS
- Nom du système Debian de la machine hôte (depuis
dpkg 1.13.2).
- DEB_HOST_ARCH_CPU
- Nom du processeur Debian de la machine hôte (depuis
dpkg 1.13.2).
- DEB_HOST_ARCH_BITS
- Taille de pointeur de la machine hôte (en bits, depuis
dpkg 1.15.4).
- DEB_HOST_ARCH_ENDIAN
- Boutisme de la machine hôte (petit ou gros, depuis
dpkg 1.15.4).
- DEB_HOST_GNU_CPU
- Partie CPU GNU de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_SYSTEM
- Partie système GNU de DEB_HOST_GNU_TYPE.
- DEB_HOST_GNU_TYPE
- Type de système GNU de la machine hôte.
- DEB_HOST_MULTIARCH
- Le type en clair de système GNU de la machine hôte,
utilisé pour les chemins du système de fichiers (depuis
dpkg 1.16.0).
- DEB_TARGET_ARCH
- L'architecture Debian de la machine cible (depuis
dpkg 1.17.14).
- DEB_TARGET_ARCH_ABI
- Nom de l'ABI Debian de la machine cible (depuis dpkg 1.18.11).
- DEB_TARGET_ARCH_LIBC
- Nom de la libc Debian de la machine cible (depuis
dpkg 1.18.11).
- DEB_TARGET_ARCH_OS
- Nom du système Debian de la machine cible (depuis
dpkg 1.17.14).
- DEB_TARGET_ARCH_CPU
- Nom du processeur Debian de la machine cible (depuis
dpkg 1.17.14).
- DEB_TARGET_ARCH_BITS
- Taille de pointeur de la machine cible (en bits, depuis
dpkg 1.17.14).
- DEB_TARGET_ARCH_ENDIAN
- Boutisme de la machine cible (petit ou gros, depuis
dpkg 1.17.14).
- DEB_TARGET_GNU_CPU
- Partie CPU GNU de DEB_TARGET_GNU_TYPE (depuis
dpkg 1.17.14).
- DEB_TARGET_GNU_SYSTEM
- Partie système GNU de DEB_TARGET_GNU_TYPE (depuis
dpkg 1.17.14).
- DEB_TARGET_GNU_TYPE
- Type du système GNU de la machine cible (depuis
dpkg 1.17.14).
- DEB_TARGET_MULTIARCH
- Le type en clair du système GNU de la machine cible, utilisé
pour les chemins du système de fichiers (depuis
dpkg 1.17.14).
Tous ces fichiers sont nécessaires afin que
dpkg-architecture puisse fonctionner. Leurs emplacements peuvent
être modifiés lors du traitement à l'aide de la
variable d'environnement DPKG_DATADIR. Ces tables contiennent en
première ligne un pseudo-champ de Version de format pour
indiquer leur format de sorte que les analyseurs peuvent vérifier
s'ils les comprennent, tel que « #
Version=1.0 ».
- /usr/share/dpkg/table-processeur
- Table des noms de processeurs connus et liaison avec leur nom GNU. Version
1.0 de format (depuis dpkg 1.13.2).
- /usr/share/dpkg/table-système-exploitation
- Table des noms des systèmes d'exploitation connus et liaison avec
leurs noms GNU. Version 2.0 de format (depuis dpkg 1.18.11).
- /usr/share/dpkg/table-n-uplet
- Correspondances entre les n-uplets de l'architecture Debian et les noms
des architectures Debian. Format version 1.0 (depuis
dpkg 1.18.11).
- /usr/share/dpkg/table-ABI
- Table des substituts d'attributs d'ABI d'architecture Debian. Format
version 2.0 (depuis dpkg 1.18.11).
- /usr/share/dpkg/architecture.mk
- Un fragment de fichier Makefile qui définit correctement et exporte
toutes les variables que dpkg-architecture peut fournir (depuis
dpkg 1.16.1).
dpkg-buildpackage accepte l'option -a, et la passe
à dpkg-architecture. Voici d'autres exemples :
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval $(dpkg-architecture -u)
Vérifier si l'architecture en cours (ou celle
spécifiée) est identique à une
architecture :
dpkg-architecture -elinux-alpha
dpkg-architecture -amips -elinux-mips
Vérifier si l'architecture en cours (ou celle
spécifiée) est un système Linux :
dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any
Les variables d'environnement définies par
dpkg-architecture sont fournies à debian/rules comme
variables pour make (consultez la documentation de make). Cependant, vous ne
devez pas compter là-dessus puisque cela empêche les appels
manuels à ce script. À la place, vous devez toujours les
initialiser en utilisant dpkg-architecture avec l'option -q.
Voici quelques exemples, qui indiquent aussi comment améliorer la
gestion des compilations croisées de votre paquet :
Récupération du type de système GNU et
passage à ./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)
Effectuer une action pour une architecture
spécifique :
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
Ou, si vous n'avez besoin que de vérifier le type du
processeur et du système, utilisez les variables
DEB_HOST_ARCH_CPU ou DEB_HOST_ARCH_OS.
Veuillez noter qu'il est également possible d'utiliser un
fragment externe de fichier Makefile pour définir correctement toutes
les variables que dpkg-architecture peut fournir :
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
Dans tous les cas, il ne faut jamais utiliser dpkg
--print-architecture pour récupérer les informations
relatives à l'architecture pendant la construction d'un paquet.
- DPKG_DATADIR
- Si cette variable est définie, elle sera utilisée comme
répertoire de données de dpkg où sont
placées les tables d'architecture (depuis dpkg 1.14.17). Par
défaut «/usr/share/dpkg».
- DPKG_COLORS
- Définit le mode de couleur (depuis dpkg 1.18.5). Les valeurs
actuellement acceptées sont auto (par défaut),
always et never.
- DPKG_NLS
- Si cette variable est définie, elle sera utilisée pour
décider l'activation de la prise en charge des langues (NLS
– Native Language Support), connu aussi comme la gestion de
l'internationalisation (ou i18n) (depuis dpkg 1.19.0). Les valeurs
permises sont : 0 et 1 (par défaut).
Tous les noms de commandes et d'options longs ne sont disponibles
qu'à partir de dpkg 1.17.17.
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe
Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute
erreur à <debian-l10n-french@lists.debian.org>.