dpkg-buildpackage - Construire depuis les sources des paquets
binaires ou sources
dpkg-buildpackage [option...]
dpkg-buildpackage est un programme qui permet d'automatiser
la construction d'un paquet Debian. Il comporte les étapes
suivantes :
- 1.
- Préparation de l'environnement de compilation par positionnement de
diverses variables d'environnement (voir VARIABLES
D'ENVIRONNEMENT), exécution du point d'entrée
init et appel de dpkg-source --before-build (sauf si
-T ou --target ont été utilisés).
- 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.
- Exécution du point d'entrée changes et appel de
dpkg-genchanges pour créer un fichier .changes. Le
nom du fichier .changes dépendra du type de construction et
sera aussi spécifique que nécessaire mais pas plus ;
pour une construction qui inclut any, le nom sera
nom-de-source_version-binaire_architecture.changes,
ou pour une construction qui inclut all, le nom sera
nom-de-source_version-binaire_all.changes,
ou pour une construction qui inclut source, le nom sera
nom-de-source_version-source_sources.changes.
De nombreuses options de dpkg-buildpackage sont passées
à 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 appel de
gpg2 ou de gpg (à 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.
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
« # »).
- --build=type
- Indique le type de construction à partir d'une liste de
composants séparés par des virgules (depuis
dpkg 1.18.5). Passé à dpkg-genchanges.
Les valeurs autorisées sont :
- source
- Construit le paquet source. Note : quand cette valeur est
utilisée toute seule et si ce que vous voulez est seulement
(re)construire le paquet source à partir d'une arborescence des
sources propre, l'utilisation directe de dpkg-source est toujours
une meilleure option dans la mesure où cela ne demande pas
l'installation de dépendances de construction qui sont sinon
nécessaires pour pouvoir appeler la cible clean.
- any
- Construit les paquets binaires spécifiques à
l'architecture.
- all
- Construit les paquets binaires indépendants de l'architecture.
- binary
- Construit les paquets binaires particuliers et indépendants de
l'architecture. C'est un alias de any,all.
- full
- 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.
- -g
- Équivalent de --build=source,all (depuis
dpkg 1.17.11).
- -G
- Équivalent de --build=source,any (depuis
dpkg 1.17.11).
- -b
- Équivalent de --build=binary ou --build=any,all.
- -B
- Équivalent de --build=any
- -A
- Équivalent de --build=all.
- -S
- Équivalent à --build=source.
- -F
- Équivalent de --build=full, --build=source,binary ou
--build=source,any,all (depuis dpkg 1.15.8).
- --target=cible[,...]
- --target
cible[,...]
- -T,
--rules-target=cible
- 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).
- --as-root
- N'est utile qu'avec --target (depuis dpkg 1.15.0). Impose
d'exécuter la cible avec les privilèges du
superutilisateur.
- -si
- -sa
- -sd
- -vversion
- -Cdescription-des-changements
- -m,
--release-by=adresse-du-responsable
- -e,
--build-by=adresse-du-responsable
- Passé tel quel à dpkg-genchanges. Voir sa page de
manuel.
- -a, --host-arch
architecture
- 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.
- -t, --host-type
type-de-système-gnu
- Précise le type de système GNU pour lequel construire
(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.
- --target-arch
architecture
- 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.
- --target-type
type-de-système-gnu
- 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.
- -P,
--build-profiles=profil[,...]
- 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.
- -j,
--jobs[jobs|auto]
- Nombre de processus simultanés qui peuvent être
exécutés, nombre de processus 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é, équivalent à l'option make(1) du
même nom (depuis dpkg 1.14.7, option longue depuis
dpkg 1.18.8). S'ajoutera tout seul à la variable
d'environnement MAKEFLAGS, afin que les appels suivants de make en
héritent, forçant donc le paramètre parallèle
sur l'empaquetage (et éventuellement le système de
construction amont s'il utilise make) indépendamment de leur prise
en charge des constructions parallèle, ce qui pourrait provoquer
des échecs de construction. Ajoute aussi
parallel=jobs ou parallel à la variable
d'environnement DEB_BUILD_OPTIONS ce qui permet aux fichiers
debian/rules d'utiliser cette information pour leurs propres besoins. La
valeur de j remplacera les options parallel=jobs 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 fils. 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.
- -J,
--jobs-try[=tâches|auto]
- Cette option (depuis dpkg 1.18.2, option longue depuis
dpkg 1.18.8) est équivalente à l'option -j
sauf qu'elle ne configure pas la variable d'environnement MAKEFLAGS
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.
Le comportement par défaut est auto (depuis
dpkg 1.18.11). Fixer le nombre de tâches à 1
rétablira un comportement sériel.
- -D,
--check-builddeps
- 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.
- -d,
--no-check-builddeps
- Pas de vérification des dépendances de constructions et des
conflits (option longue depuis dpkg 1.18.8).
- --ignore-builtin-builddeps
- 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-Essentiel.
- --rules-requires-root
- Pas de prise en compte du champ Rules-Requires-Root, retour
à l'ancienne valeur par défaut (depuis
dpkg 1.19.1).
- -nc,
--no-pre-clean
- 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).
- --pre-clean
- Nettoyage de l'arborescence des sources avant la construction (depuis
dpkg 1.18.8). C'est le comportement par défaut.
- -tc,
--post-clean
- 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).
- --no-post-clean
- 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.
- -r,
--root-command=commande-pour-obtenir-privilèges-de-root
- 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.
- -R,
--rules-file=fichier-rules
- 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).
- --check-command=commande-contrôleur
- 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.
- --check-option=opt
- 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.
- --hook-nom-de-point-d'entrée=commande-de-point-d'entrée
- 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é.
Note : Les points d'entrée sont susceptibles
d'affecter le processus de construction et provoquer des échecs
de construction si leurs commandes échouent, donc attention aux
conséquences inattendues.
Les nom-de-point-d'entrée actuellement pris en
charge sont :
init preclean source build binary buildinfo changes
postclean check sign done
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.
- --buildinfo-option=opt
- Passer l'option opt à dpkg-genbuildinfo (depuis
dpkg 1.18.11). Peut être utilisé plusieurs fois.
- -p,
--sign-command=commande-de-signature
- Quand dpkg-buildpackage doit exécuter GPG pour signer un
fichier source de contrôle (.dsc) ou un fichier
.changes, il exécute commande-de-signature
(recherchée dans PATH si nécessaire) au lieu de
gpg2 ou gpg (option longue depuis dpkg 1.18.1).
commande-de-signature reçoit tous les paramètres
qu'auraient reçu gpg2 ou gpg.
commande-de-signature ne devra pas contenir d'espace ni aucun
métacaractère de l'interpréteur de commandes.
- -k,
--sign-key=identifiant-clé
- Préciser une clé pour la signature des paquets (option
longue depuis dpkg 1.18.8).
- -us,
--unsigned-source
- Ne pas signer le paquet source (option longue depuis
dpkg 1.18.8).
- -ui,
--unsigned-buildinfo
- Ne pas signer le fichier .buildinfo (depuis
dpkg 1.18.19).
- -uc,
--unsigned-changes
- Ne signer ni le fichier .buildinfo, ni le fichier .changes
(option longue depuis dpkg 1.18.8).
- --no-sign
- Aucune signature de fichier, y compris du paquet source, du fichier
.buildinfo et du fichier .changes (depuis
dpkg 1.18.20).
- --force-sign
- 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.
- -sn
- -ss
- -sA
- -sk
- -su
- -sr
- -sK
- -sU
- -sR
- -i,
--diff-ignore[=expression-rationnelle]
- -I,
--tar-ignore[=motif]
- -z,
--compression-level=niveau
- -Z,
--compression=compression
- Chaîne passée telle quelle à dpkg-source. Voir
la page de manuel correspondante.
- --source-option=opt
- Passer l'option opt à dpkg-source (depuis
dpkg 1.15.6). Peut être utilisé plusieurs fois.
- --changes-option=opt
- Passer l'option opt à dpkg-genchanges (depuis
dpkg 1.15.6). Peut être utilisé plusieurs fois.
- --admindir=répertoire
- --admindir
rép
- 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
- Affiche un message d'aide puis quitte.
- --version
- Affiche le numéro de version puis quitte.
- DEB_CHECK_COMMAND
- 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.
- DEB_SIGN_KEYID
- Si cette option est utilisée, elle le sera pour la signature des
fichiers .changes et .dsc (depuis dpkg 1.17.2).
Remplacée par l'option --sign-key.
- DEB_BUILD_OPTIONS
- Si cette option est utilisée, elle contiendra une liste
séparée par des espaces d'options qui pourraient affecter le
processus de construction dans debian/rules et le comportement de
certaines commandes de dpkg.
La variable DEB_CHECK_COMMAND sera ignorée avec
nocheck. Avec parallel=N les tâches
parallèles seront fixées à N,
remplacée par l'option --jobs-try.
- DEB_BUILD_PROFILES
- 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.
- 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).
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.
- DEB_BUILD_*
- DEB_HOST_*
- DEB_TARGET_*
- 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.
- DEB_RULES_REQUIRES_ROOT
- Cette variable est fixée à la valeur obtenue du champ
Rules-Requires-Root ou de la ligne de commande. Lorsqu'elle est
configurée, ce sera une valeur valable pour le champ
Rules-Requires-Root. Elle est utilisée pour indiquer
à debian/rules si la spécification
rootless-builds.txt est prise en charge.
- DEB_GAIN_ROOT_CMD
- 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.
- SOURCE_DATE_EPOCH
- 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.
- /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
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.
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.
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.
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe
Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute
erreur à <debian-l10n-french@lists.debian.org>.