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.
-
any-any-any-any =
any
-
any-any-os-any =
os-any
-
any-libc-any-any =
libc-any-any
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.
dpkg-buildpackage(1).
Ariel VARDI <
[email protected]>, 2002. Philippe Batailler, 2006.
Nicolas François, 2006. Veuillez signaler toute erreur à
<
[email protected]>.