Scroll to navigation

dpkg-buildpackage(1) dpkg suite dpkg-buildpackage(1)

NOM

dpkg-buildpackage - Construire depuis les sources des paquets binaires ou sources

SYNOPSIS

dpkg-buildpackage [option...]

DESCRIPTION

dpkg-buildpackage est un programme qui permet d'automatiser la construction d'un paquet Debian. Il comporte les étapes suivantes :

1.
It runs the preinit hook before reading any source file. It prepares the build environment by setting various environment variables (see ENVIRONMENT), runs the init hook, and calls dpkg-source --before-build (unless -T or --target has been used).
2.
Contrôle des dépendances de construction et des conflits de construction (non effectué si -d ou --no-check-builddeps sont utilisés).
3.
Si une ou plusieurs cibles particulières ont été indiquées avec les options -T ou --target, appel de ces cibles et arrêt. Dans le cas contraire, exécution du point d'entrée preclean et appel de fakeroot debian/rules clean pour nettoyage de l'arborescence source (sauf si -nc ou --no-pre-clean ont été utilisés).
4.
Exécution du point d'entrée source et appel de dpkg-source -b pour créer le paquet source (si une construction source a été demandée avec --build ou des options équivalentes).
5.
Exécution du point d'entrée build et appel de debian/rules build-target, puis exécution du point d'entrée binary suivie de fakeroot debian/rules binary-target (sauf si une construction source seule a été demandée avec --build=source ou des options équivalentes). Noter que build-target et binary-target sont soit build et binary (cas par défaut, ou si une construction any et all a été demandée avec --build ou des options équivalentes), soit build-arch et binary-arch (si une construction any et pas all a été demandée avec --build ou des options équivalentes), soit build-indep et binary-indep (si une construction all et pas any a été demandée avec --build ou des options équivalentes).
6.
Exécution du point d'entrée buildinfo et appel de dpkg-genbuildinfo pour créer un fichier .buildinfo. De nombreuses options de dpkg-buildpackage sont passées à dpkg-genbuildinfo.
7.
It runs the changes hook and calls dpkg-genchanges to generate a .changes file. The name of the .changes file will depend on the type of build and will be as specific as necessary but not more; the name will be:
for a build that includes any
otherwise for a build that includes all
otherwise for a build that includes source

Many dpkg-buildpackage options are forwarded to dpkg-genchanges.

8.
Exécution du point d'entrée postclean et si -tc ou --post-clean sont utilisés, appel de fakeroot debian/rules clean à nouveau.
9.
Appel de dpkg-source --after-build.
10.
Exécution du point d'entrée check et appel d'un contrôleur de paquet pour le fichier .changes (dans le cas où une commande est spécifiée dans DEB_CHECK_COMMAND ou avec --check-command).
11.
Exécution du point d'entrée sign et signature avec le dorsal OpenPGP (à condition que ce ne soit pas une construction pour UNRELEASED, ou si --no-sign est spécifié), pour signature des fichiers .dsc (sauf si -us ou si --unsigned-source sont spécifiés), .buildinfo (sauf si -ui, --unsigned-buildinfo, -uc ou --unsigned-changes sont spécifiés) et .changes (sauf si -uc ou --unsigned-changes sont spécifiés).
12.
Exécution du point d'entrée done.

OPTIONS

Toutes les options longues peuvent être spécifiées à la fois sur la ligne de commande et dans les fichiers de configuration utilisateur et de système dpkg-buildpackage. Chaque ligne du fichier de configuration est soit une option (identique à une option en ligne de commande mais sans tiret), soit un commentaire (si elle commence par « # »).

Indique le type de construction à partir d'une liste de composants séparés par des virgules (depuis dpkg 1.18.5). Tous les composants indiqués sont combinés pour choisir l'unique type de construction à utiliser, ce qui implique qu'une seule construction est exécuté avec la génération d'un seul fichier .changes. Passé à dpkg-genchanges.

Les valeurs autorisées sont :

Construit le paquet source.

Note: When using this value standalone and if what you want is simply to (re-)build the source package from a clean source tree, using dpkg-source directly is always a better option as it does not require any build dependencies to be installed which are otherwise needed to be able to call the clean target.

Construit les paquets binaires spécifiques à l'architecture.
Construit les paquets binaires indépendants de l'architecture.
Construit les paquets binaires particuliers et indépendants de l'architecture. C'est un alias de any,all.
Construction complète. C'est un alias de source,any,all, et il est identique au cas par défaut où aucune option de construction n'est indiquée.
Équivalent de --build=source,all (depuis dpkg 1.17.11).
Équivalent de --build=source,any (depuis dpkg 1.17.11).
Équivalent de --build=binary ou --build=any,all.
Équivalent de --build=any
Équivalent de --build=all.
Équivalent à --build=source.
Équivalent de --build=full, --build=source,binary ou --build=source,any,all (depuis dpkg 1.15.8).
Appelle debian/rules cible une fois par cible spécifiée, après avoir mis en place l'environnement de construction (sauf pour appeler dpkg-source --before-build), puis interrompt le processus de construction (depuis dpkg 1.15.0, option longue depuis dpkg 1.18.8, pris en charge de multiples cibles depuis dpkg 1.18.16). Si --as-root est également utilisé, la commande sera exécutée avec les privilèges du superutilisateur (voir --root-command). Noter que les cibles connues dont l'exécution par root est imposée n'ont pas besoin de cette option (c'est-à-dire les cibles clean, binary, binary-arch et binary-indep).
N'est utile qu'avec --target (depuis dpkg 1.15.0). Impose d'exécuter la cible avec les privilèges du superutilisateur.
Passé tel quel à dpkg-genchanges. Voir sa page de manuel.
Passé comme -m à dpkg-genchanges. Voir sa page de manuel.
Passé comme -e à dpkg-genchanges. Voir sa page de manuel.
Précise l'architecture Debian pour laquelle on construit (option longue depuis dpkg 1.17.17). L'architecture de la machine sur laquelle on construit est automatiquement déterminée ; c'est aussi l'architecture par défaut de la machine hôte.
Précise le type de système GNU pour lequel on construit (option longue depuis dpkg 1.17.17). Il peut être utilisé à la place de --host-arch ou en tant que complément afin de remplacer le type de système GNU par défaut de l'architecture Debian hôte.
Précise l'architecture Debian pour laquelle les binaires compilés vont construire (depuis dpkg 1.17.17). La valeur par défaut est l'architecture de la machine hôte.
Précise le type de système GNU pour lequel les binaires compilés vont construire (depuis dpkg 1.17.17). Il peut être utilisé à la place de --target-arch ou en tant que complément afin de remplacer le type de système GNU par défaut de l'architecture Debian cible.
Précise le ou les profils que l'on construit, sous forme d'une liste séparée par des virgules (depuis dpkg 1.17.2, option longue depuis dpkg 1.18.8). Le comportement par défaut est de construire pour un profil non spécifique. Cela les définit également (sous la forme d'une liste séparée par des espaces) en tant que variable d'environnement DEB_BUILD_PROFILES, ce qui permet, par exemple, au fichiers debian/rules d'utiliser cette information pour des constructions conditionnelles.
Spécifier le nombre de processus simultanés qui peuvent être exécutés (option longue depuis dpkg 1.18.8). Le nombre de tâches correspondant au nombre de processeurs en ligne si auto est indiquée (depuis dpkg 1.17.10), ou un nombre illimité si jobs n'est pas indiqué. Le comportement par défaut est auto (depuis dpkg 1.18.11) en mode non forcé (depuis dpkg 1.21.10) et, à ce titre, il est plus sûr de l'utiliser avec tous les paquets y compris ceux qui ne sont pas sécurisés pour une construction parallèle. Fixer le nombre de tâches à 1 rétablira une exécution sérielle.

L'option ajoutera parallel=tâches ou parallel à la variable d'environnement DEB_BUILD_OPTIONS ce qui permet aux fichiers debian/rules de choisir d'utiliser cette information pour leurs propres besoins. La valeur jobs remplacera les options parallel=tâches ou parallel dans la variable d'environnement DEB_BUILD_OPTIONS. Notez que la valeur auto sera remplacée par le nombre réel de processeurs actuellement actifs, et par conséquent ne sera pas transmise à aucun processus enfant. Si le nombre de processeurs en ligne ne peut pas être déduit, alors le code utilisera par défaut une exécution sérielle (depuis dpkg 1.18.15), même si cela ne devrait arriver que sur des systèmes exotiques et non pris en charge.

Cette option (depuis dpkg 1.18.2, option longue depuis dpkg 1.18.8) est équivalente à l'option -j ci-dessus.

Dans la mesure où le comportement de -j a changé dans dpkg 1.21.10 pour le mode « opt-in », vous pouvez utiliser cette option à la place si vous devez garantir des sémantiques dans toutes les versions de dpkg.

Cette option (depuis dpkg 1.21.10) est équivalente à l'option --jobs sauf qu'elle active le mode parallèle forcé en ajoutant l'option make -j avec le nombre calculé de tâches parallèles à la variable d'environnement MAKEFLAGS.

Cela devrait faire que les invocations ultérieures de make héritent de cette option, forçant donc une configuration parallèle de l'empaquetage (et potentiellement le système de construction amont s'il utilise make(1)), sans tenir compte de la prise en compte des constructions parallèles, ce qui pourrait provoquer des échecs de constructions.

Note: Any Makefile that is not parallel-safe should be considered to be buggy. These should either be made parallel-safe, or marked as not being safe with the make(1) .NOTPARALLEL target.

Vérification des dépendances de constructions et des conflits ; se termine en cas de problèmes (option longue depuis dpkg 1.18.8). C'est le comportement par défaut.
Pas de vérification des dépendances de constructions et des conflits (option longue depuis dpkg 1.18.8).
Pas de vérification des dépendances de constructions internes et des conflits (depuis dpkg 1.18.2). Il s'agit des dépendances de construction implicites spécifiques à la distribution habituellement requises dans un environnement de construction, c'est l'ensemble de paquets appelé Build-Essential.
Pas de prise en compte du champ Rules-Requires-Root, retour à l'ancienne valeur par défaut (depuis dpkg 1.19.1).
Pas de nettoyage de l'arborescence des sources avant la construction (option longue depuis dpkg 1.18.8). Implique -b si aucune des options -F, -g, -G, -B, -A ou -S n'est utilisée). Implique -d avec -S (depuis dpkg 1.18.0).
Nettoyage de l'arborescence des sources avant la construction (depuis dpkg 1.18.8). C'est le comportement par défaut.
Nettoyage de l'arborescence des sources (en utilisant commande-pour-obtenir-privilèges-de-root debian/rules clean) après la construction du paquet (option longue depuis dpkg 1.18.8).
Pas de nettoyage de l'arborescence des sources après la construction du paquet (depuis dpkg 1.19.1). C'est le comportement par défaut.
Nettoyage de l'environnement de construction (depuis dpkg 1.20.0). Cela remet à zéro ou supprime les variables d'environnement, umask et tous les autres attributs de processus qui pourrait autrement affecter défavorablement la construction des paquets. Parce que le point d'entrée officiel pour la construction des paquets est debian/rules, les paquets ne peuvent pas dépendre du fait que ces réglages sont présents et donc devraient fonctionner même quand ils ne le sont pas. Ce qu'il faut nettoyer est propre au fabricant.
Quand dpkg-buildpackage doit exécuter une partie du processus de construction en tant que root, il préfixe la commande exécutée par commande-pour-obtenir-privilèges-de-root, si une a été spécifiée (option longue depuis dpkg 1.18.8). Si ce n'est pas le cas alors fakeroot est utilisé par défaut. commande-pour-obtenir-privilèges-de-root doit débuter par le nom d'un programme accessible depuis PATH et avoir comme arguments le nom de la commande réelle avec les arguments qu'elle doit prendre. commande-pour-obtenir-privilèges-de-root peut recevoir des paramètres (ils doivent être séparés par des espaces) mais aucun métacaractère de l'interpréteur de commandes. Classiquement commande-pour-obtenir-privilèges-de-root devrait être fakeroot, sudo, super ou really. su ne va pas, puisque ce programme peut uniquement utiliser l'interpréteur de commandes de l'utilisateur avec l'option -c au lieu de passer directement les arguments à la commande qui doit être exécutée.
Construire un paquet Debian implique généralement l'invocation de debian/rules comme une commande avec de nombreux paramètres standard (depuis dpkg 1.14.17, option longue depuis dpkg 1.18.8). Avec cette option, il est possible d'utiliser un autre programme à utiliser pour la construction de paquet (ainsi que ses paramètres séparés par des espaces). Une autre utilisation possible est d'exécuter le fichier rules standard avec un autre programme make (par exemple en utilisant /usr/local/bin/make -f debian/rules comme fichier-rules).
Commande utilisée pour vérifier le fichier .changes lui-même et tout objet construit référencé dans le fichier (depuis dpkg 1.17.6). La commande peut recevoir comme argument le nom de chemin de .changes. Cette commande est en général lintian.
Passer l'option opt à commande-contrôleur indiquée par DEB_CHECK_COMMAND ou --check-command (depuis dpkg 1.17.6). Peut être utilisé plusieurs fois.
Définir le code spécifié de l'interpréteur de commandes commande-de-point-d'entrée comme point d'entrée nom-de-point-d'entré qui sera exécuté aux moments spécifiés par les étapes d'exécution (depuis dpkg 1.17.6). Les points d'entrée seront toujours exécutés même si l'action suivante n'est pas effectuée (sauf pour le point d'entrée binary). Tous les points d'entrée seront exécutés dans le répertoire source dépaqueté.

Some hooks can receive addition information through environment variables (since dpkg 1.22.0). All hooks get the hook name in the DPKG_BUILDPACKAGE_HOOK_NAME environment variable (since dpkg 1.22.0).

Note: Hooks can affect the build process, and cause build failures if their commands fail, so watch out for unintended consequences.

Les nom-de-point-d'entrée actuellement pris en charge sont :

Gets DPKG_BUILDPACKAGE_HOOK_SOURCE_OPTIONS with the space-separated lists of options that will passed to the dpkg-source call.
Gets DPKG_BUILDPACKAGE_HOOK_BUILD_TARGET with the name of the debian/rules build target called, but only if called.
Gets DPKG_BUILDPACKAGE_HOOK_BINARY_TARGET with the name of the debian/rules binary target called, but only if called.
Gets DPKG_BUILDPACKAGE_HOOK_BUILDINFO_OPTIONS with the space-separated lists of options that will passed to the dpkg-genbuildinfo call.
Gets DPKG_BUILDPACKAGE_HOOK_CHANGES_OPTIONS with the space-separated lists of options that will passed to the dpkg-genchanges call.
Gets DPKG_BUILDPACKAGE_HOOK_CHECK_OPTIONS with the space-separated lists of options that will passed to the check command call.

La commande-point-d'entrée gère les chaînes de formatage de substitution suivantes, qui lui sont appliquées avant exécution :

%%
Un caractère % seul.
%a
Une valeur booléenne (0 ou 1) qui indique si l'action suivante est effectuée.
%p
Nom du paquet source.
%v
La version du paquet source.
%s
La version du paquet source (sans l'« epoch »).
%u
La version amont.
Définir le fichier pour le fichier .buildinfo généré (depuis dpkg 1.21.0).
Passer l'option opt à dpkg-genbuildinfo (depuis dpkg 1.18.11). Peut être utilisé plusieurs fois.
Préciser une interface de dorsal OpenPGP à utiliser lors de l'invocation de la commande sign-command (depuis dpkg 1.21.10).

C'est auto par défaut, où le meilleur dorsal présent disponible sera utilisé. Les dorsaux spécifiques à OpenPGP pris en charge sont par ordre de préférence :

(any conforming Stateless OpenPGP implementation)
(from Sequoia-PGP)
(from GnuPG)
When dpkg-buildpackage needs to execute an OpenPGP backend command to sign a source control (.dsc) file, a .buildinfo file or a .changes file it will run sign-command (searching the PATH if necessary) instead of the default or auto-detected backend command (long option since dpkg 1.18.8). sign-command will get all the backend specific arguments according to the --sign-backend selected. sign-command should not contain spaces or any other shell metacharacters.
Préciser un identifiant de clé OpenPGP (soit une empreinte soit un identifiant d'utilisateur) pour la clé secrète à utiliser lors de la signature des paquets (--sign-key depuis dpkg 1.18.8, --sign-keyid depuis dpkg 1.21.10).
Préciser un fichier-de-clé OpenPGP contenant la clé secrète à utiliser pour la signature des paquets (depuis dpkg 1.21.10).

Note: For security reasons the key-file is best kept locked with a password.

Ne pas signer le paquet source (option longue depuis dpkg 1.18.8).
Ne pas signer le fichier .buildinfo (depuis dpkg 1.18.19).
Ne signer ni le fichier .buildinfo, ni le fichier .changes (option longue depuis dpkg 1.18.8).
Aucune signature de fichier, y compris du paquet source, du fichier .buildinfo et du fichier .changes (depuis dpkg 1.18.20).
Forcer la signature des fichiers produits (depuis dpkg 1.17.0) indépendamment de -us, --unsigned-source, -ui, --unsigned-buildinfo, -uc, --unsigned-changes ou d'autres heuristiques internes.
Chaîne passée telle quelle à dpkg-source. Voir la page de manuel correspondante.
Passer l'option opt à dpkg-source (depuis dpkg 1.15.6). Peut être utilisé plusieurs fois.
Définir le fichier pour le fichier .changes généré (depuis dpkg 1.21.0).
Passer l'option opt à dpkg-genchanges (depuis dpkg 1.15.6). Peut être utilisé plusieurs fois.
Changer l'endroit où se trouve la base de données de dpkg (depuis dpkg 1.14.0). Par défaut, c'est /var/lib/dpkg.
-?, --help
Afficher un message d'aide puis quitter.
Afficher le numéro de version puis quitter.

ENVIRONNEMENT

Environnement externe

Si cette option est utilisée, elle le sera comme commande pour contrôler le fichier .changes (depuis dpkg 1.17.6). Remplacée par l'option --check-command.
Si cette option est utilisée, elle le sera pour la signature des fichiers .changes, .buildinfo et .dsc (depuis dpkg 1.17.2). Remplacée par l'option --sign-key.
Si cette option est utilisée, elle le sera pour la signature des fichiers .changes, .buildinfo et .dsc (depuis dpkg 1.21.10). Remplacée par l'option --sign-keyfile.
If set, it will contain a space-separated list of options that affect the behavior of some dpkg tools involved in package building, and might affect the package build process if the code in debian/rules honors them.

The following are the options known and supported by dpkg tools, other options honored by debian/rules might be defined by distribution specific policies.

The debian/rules in the packaging might use this option to set up the build process to use N parallel jobs. It is overridden by the --jobs and --jobs-force options.
dpkg-buildpackage will ignore the DEB_CHECK_COMMAND variable. The debian/rules in the packaging is not expected to run test suites during the build.
If debian/rules calls dpkg-buildflags to set up the build flags, those will be set to not enable any optimizations.
The debian/rules in the packaging should ensure that objects do not get the debugging information stripped. If debian/rules includes the mk/buildtools.mk make fragment the STRIP make variable will respect this option.
dpkg-buildpackage will append the --no-print-directory make(1) flag to the MAKEFLAGS environment variable. The debian/rules in the packaging should reduce verbosity, while not being completely quiet.
Si cette option est utilisée, elle sera utilisée comme profil(s) de construction actif(s) pour le paquet à construire (depuis dpkg 1.17.2). C'est une liste séparée par des espaces de noms de profil. Cette option est outrepassée par l'option -P.
Définit le mode de couleur (depuis dpkg 1.18.5). Les valeurs actuellement acceptées sont auto (par défaut), always et never.
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).

Environnement interne

Même si dpkg-buildpackage exporte certaines variables, debian/rules ne doit pas dépendre de leur présence, mais doit préférablement utiliser l'interface correspondante pour retrouver les valeurs nécessaires, parce que ce fichier est le point d'entrée principal pour la construction des paquets et son exécution autonome devrait être prise en charge.

dpkg-architecture est lancé avec les paramètres de -a et -t. Toute variable retournée par l'option -s est intégrée dans l'environnement de construction.
This variable is set to the value obtained from the Rules-Requires-Root field, the dpkg-build-api level or from the command-line. When set, it will be a valid value for the Rules-Requires-Root field. It is used to notify debian/rules whether the rootless-builds.txt specification is supported.
Cette valeur est fixée à commande-pour-obtenir-privilèges-de-root si le champ Rules-Requires-Root est fixé à une valeur différente de no ou binary-targets.
Cette valeur est fixée à l'horodatage d'Unix depuis « l'epoch » de la dernière entrée de debian/changelog, si elle n'a pas déjà été définie.

FICHIERS

/etc/dpkg/buildpackage.conf
Fichier de configuration pour l'ensemble du système
$XDG_CONFIG_HOME/dpkg/buildpackage.conf ou
$HOME/.config/dpkg/buildpackage.conf
Fichier de configuration propre à l'utilisateur

NOTES

Les drapeaux de compilation ne sont plus exportés.

Entre les versions 1.14.17 et 1.16.1, dpkg-buildpackage exportait les drapeaux de compilation (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS et LDFLAGS) avec les valeurs que renvoyait dpkg-buildflags. Cela n'est plus le cas.

Cibles construites par défaut

dpkg-buildpackage utilise les cibles build-arch et build-indep depuis dpkg 1.16.2. Ces cibles sont donc obligatoires. Cependant, pour éviter de casser les paquets existants et faciliter la transition, si le paquet source ne construit pas à la fois les paquets binaires indépendants et dépendants de l'architecture (depuis dpkg 1.18.8), la cible build sera utilisée par défaut si make -f debian/rules -qn build-target renvoie 2 comme code de retour.

SECURITY

Building binary or source packages should only be performed over trusted source data.

BOGUES

On devrait pouvoir mettre des espaces et des métacaractères du shell et les arguments initiaux de commande-pour-obtenir-privilèges-de-root et commande-de-signature.

VOIR AUSSI

/usr/share/doc/dpkg/spec/rootless-builds.txt, dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genbuildinfo(1), dpkg-genchanges(1), fakeroot(1), lintian(1), <https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/>, sq(1), gpg(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>.

2024-01-19 1.22.3