dpkg-architecture(1)

NOM
dpkg-architecture - Fixer et déterminer l'architecture pour la construction d'un paquet

SYNOPSIS
dpkg-architecture [option...] [commande]

DESCRIPTION
dpkg-architecture aide à déterminer et à fixer l'architecture de construction et l'architecture hôte pour la création d'un paquet.

The build architecture is always determined by either the DEB_BUILD_ARCH variable if set (and --force not being specified) or by an external call to dpkg(1), and cannot be set at the command line.

You can specify the host architecture by providing one or both of the options --host-arch and --host-type, otherwise the DEB_HOST_ARCH variable is used if set (and --force not being specified). The default is determined by an external call to gcc(1), or the same as the build architecture if CC or gcc are both not available. One out of --host-arch and --host-type is sufficient, the value of the other will be set to a usable default. Indeed, it is often better to only specify one, because dpkg-architecture will warn you if your choice does not match the default.

COMMANDES

-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.

    If the command-string contains shell metacharacters, then it will be invoked through the system bourne shell.

-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.

OPTIONS

-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
    Values set by existing environment variables with the same name as used by the scripts are honored (i.e. used by dpkg-architecture), except if this force flag is present. This allows the user to override a value even when the call to dpkg-architecture is buried in some other script (for example dpkg-buildpackage(1)).

TERMINOLOGIE

Machine de construction
    Machine sur laquelle le paquet est construit.

Machine hôte
    Machine pour laquelle le paquet est construit.

Machine cible
    The machine the compiler is building for, or the emulator will run code for. This is only needed when building a cross-toolchain (or emulator), one that will be built on the build architecture, to be run on the host architecture, and that itself will build (or run emulated) code for the target architecture.

Architecture Debian
    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.

N-uplet d'architecture Debian
    A Debian architecture tuple is the fully qualified architecture with all its components spelled out. This differs with Debian architectures in that at least the cpu component does not embed the abi. The current tuple has the form abi-libc-os-cpu.

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

Architecture Debian joker
    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

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

Type de système GNU
    A GNU architecture specification string consisting of two parts separated by a hyphen: CPU and system.

    The CPU part never contains a hyphen, while the system part might itself contain a hyphen to separate a kernel from its general ABI, where the general ABI might contain both runtime (such as libc) and executable ABI specifiers joined without a hyphen.

    Examples: i586-linux-gnu, sparc64-linux-gnu, i686-gnu, x86_64-netbsd.

n-uplet multiarchitecture
    The clarified GNU system type, used for filesystem paths. This triplet does not change even when the baseline ISA gets bumped, so that the resulting paths are stable over time. The only current difference with the GNU system type is that the CPU part for i386 based systems is always i386.

    Examples: i386-linux-gnu, x86_64-linux-gnu. Example paths: /lib/powerpc64le-linux-gnu/, /usr/lib/i386-gnu/.

VARIABLES D'ENVIRONNEMENT
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.

    Note: If you are not building tools that need to run during the build, these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.

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).

    Note: If you are not building cross-toolchains (or emulators), these are probably not the variables you are looking for. Please see "TERMS" section for the meanings of these terms.

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).

FICHIERS

  Tables d'architectures
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).

  Gestion de l'empaquetage

/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).

EXEMPLES
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-arm64

 dpkg-architecture -ariscv64 -elinux-riscv64

Vérifier si l'architecture en cours (ou celle spécifiée) est un système Linux :

 dpkg-architecture -ilinux-any

 dpkg-architecture -aamd64 -ilinux-any

  Utilisation dans debian/rules
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),arm64)
   [...]
 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),arm64)
   [...]
 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.

ENVIRONNEMENT

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).

NOTES
Tous les noms de commandes et d'options longs ne sont disponibles qu'à partir de dpkg 1.17.17.

VOIR AUSSI
dpkg-buildpackage(1).

TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.