NOM¶
debuild - Construire un paquet Debian
SYNOPSIS¶
debuild [
options_debuild] [
options_dpkg-buildpackage] [
--lintian-opts options_lintian]
debuild [
options_debuild] --
binary|
binary-arch|
binary-indep|
clean ...
DESCRIPTION¶
debuild crée tous les fichiers nécessaires pour envoyer un
paquet à l'archive Debian. Il exécute dans un premier temps
dpkg-buildpackage, puis
lintian avec le fichier
.changes
créé (en supposant que
lintian est installé),
enfin il signe les fichiers
.changes et/ou
.dsc
appropriés (en utilisant
debsign(1) plutôt que
dpkg-buildpackage(1) ; toutes les options relatives à la
signature lui sont passées). Des paramètres peuvent être
fournis à
dpkg-buildpackage et
lintian, en utilisant les
paramètres de l'option
--lintian-opts pour ce dernier. Les
options
--lintian et
--no-lintian permettent de forcer ou
d'empêcher l'exécution de
lintian. Par défaut,
lintian est exécuté. Il y a également d'autres
options permettant de définir ou conserver des variables
d'environnement, comme décrit dans la section
VARIABLES
D'ENVIRONNEMENT ci-dessous. Cette façon d'exécuter
debuild permet également d'obtenir un journal de la construction
du paquet dans
../<paquet>_<version>_<arch>.build.
Une autre façon d'utiliser
debuild est d'utiliser un (ou plus) des
paramètres
binary,
binary-arch,
binary-indep et
clean. Dans ce cas,
debuild cherchera à obtenir les
droits du superutilisateur et à exécuter
debian/rules
avec ce(s) paramètre(s). Les options
--rootcmd=
commande_pour_devenir_superutilisateur ou
-rcommande_pour_devenir_superutilisateur peuvent être
utilisées. La
commande_pour_devenir_superutilisateur est en
règle générale une de celles-ci :
fakeroot,
sudo ou
super. Lisez ci-dessous pour une discussion plus
approfondie sur ce point. Encore une fois, les options permettant de
préserver l'environnement peuvent être utilisées. Dans ce
cas,
debuild cherchera également à exécuter dans
un premier temps
dpkg-checkbuilddeps ; cela peut être
explicitement demandé ou empêché avec les options
-D et
-d, respectivement. Remarquez également que si une
de ces options ou si l'option
-r est indiquée dans la variable
DEBUILD_DPKG_BUILDPACKAGE_OPTS du fichier de configuration, elle sera
reconnue, même avec cette façon d'exécuter
debuild.
debuild lit aussi les fichiers de configuration de
devscripts
décrits ci-dessous. Cela permet de fournir des options à
utiliser par défaut.
Vérification du nom du répertoire¶
Comme plusieurs autres scripts du paquet
devscripts,
debuild
parcourt une arborescence de répertoires jusqu'à trouver un
fichier
debian/changelog avant de construire le paquet. Pour
éviter les problèmes posés par les fichiers
égarés, il examine le nom du répertoire parent une fois
le fichier
debian/changelog trouvé, et vérifie que le nom
du répertoire correspond au nom du paquet. La façon
précise utilisée est contrôlée par les deux
variables du fichier de configuration
DEVSCRIPTS_CHECK_DIRNAME_LEVEL et
DEVSCRIPTS_CHECK_DIRNAME_REGEX, et les options en ligne de commande
associées
--check-dirname-level et
--check-dirname-regex.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL peut prendre les valeurs
suivantes :
- 0
- Ne jamais vérifier le nom du répertoire.
- 1
- Ne vérifier le nom du répertoire que s'il a fallu changer de
répertoire pour trouver le fichier debian/changelog. C'est
le comportement par défaut.
- 2
- Toujours vérifier le nom du répertoire.
Le nom du répertoire est vérifié en testant si le nom du
répertoire actuel (donné par
pwd(1)) correspond à
l'expression rationnelle donnée par la variable
DEVSCRIPTS_CHECK_DIRNAME_REGEX du fichier de configuration ou par
l'option
--check-dirname-regex expression_rationnelle. Il s'agit
d'une expression rationnelle Perl (voir
perlre(1)), qui sera
ancrée à son début et à sa fin. Si elle contient
un « / », alors elle doit correspondre au chemin
complet, sinon elle doit correspondre au nom de répertoire complet. Si
elle contient la chaîne « PACKAGE », cette
chaîne sera remplacée par le nom du paquet source
déterminé par le fichier
changelog. La valeur par
défaut de cette expression rationnelle est
« PACKAGE(-.+)? », ce qui correspond aux
répertoires nommés PACKAGE ou PACKAGE-version.
VARIABLES D'ENVIRONNEMENT¶
Comme les variables d'environnement peuvent affecter la construction d'un
paquet, souvent de façon involontaire,
debuild nettoie
l'environnement en enlevant toutes les variables d'environnement, à
l'exception de
TERM,
HOME,
LOGNAME,
GNUPGHOME,
PGPPATH,
GPG_AGENT_INFO,
GPG_TTY,
DBUS_SESSION_BUS_ADDRESS,
FAKEROOTKEY,
DEBEMAIL,
DEB_ *, des variables (
C,
CPP,
CXX,
LD et
F)
FLAGS et les variables
_APPEND
associées, ainsi que les variables pour les paramètres
régionaux
LANG et
LC_*. La variable
TERM
vaut « dumb » si elle n'est pas définie, et
PATH est définie à
« /usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 ».
Si une variable d'environnement ne doit pas être modifiée pour la
construction d'un paquet, il est possible d'utiliser
--preserve-envvar
var (ou
-e var). L'environnement peut aussi être
préservé en utilisant l'option
--preserve-env. Cependant,
même dans ce cas le
PATH est remis à la valeur
précisée ci-dessus. Le
seul moyen d'empêcher le
PATH d'être remis à zéro est d'utiliser une option
--preserve-envvar PATH. Mais soyez conscient qu'utiliser des
programmes d'un emplacement non standard peut facilement résulter en un
paquet cassé, puisqu'il ne sera pas possible de le construire sur des
systèmes standards.
Remarquez que des répertoire peuvent être ajoutés au
début de la variable d'environnement
PATH en utilisant l'option
--prepend-path. C'est utile quand on veut utiliser des outils comme
ccache ou
distcc pour la construction d'un paquet.
Il est également possible d'éviter d'avoir à écrire
quelque chose comme
TOTO=
titi debuild -e TOTO en
écrivant
debuild -e TOTO=
titi ou la forme longue
debuild --set-envvar TOTO=
titi.
OBTENTION DES DROITS DU SUPERUTILISATEUR¶
debuild doit être exécuté en tant que
superutilisateur pour fonctionner correctement. Il y a trois façons
fondamentalement différentes de faire cela. La première, et
celle qui est conseillée, est d'utiliser une commande permettant de
devenir superutilisateur. La meilleure d'entre elles est probablement
fakeroot(1), puisqu'elle ne nécessite pas d'accorder
véritablement de droits.
super(1) et
sudo(1) sont
d'autres possibilités. Si aucune option
-r (ou
--rootcmd)
n'est donnée (rappelez-vous que
dpkg-buildpackage accepte
également une option
-r) et qu'aucune des méthodes
suivantes n'est utilisée, alors
-rfakeroot sera implicitement
considérée.
La deuxième méthode est d'utiliser une commande comme
su(1)
pour devenir superutilisateur, et ensuite de réaliser toutes les
opérations en tant que superutilisateur. Remarquez cependant que
lintian s'arrêtera s'il est exécuté en tant que
superutilisateur ou setuid root ; cela peut être
contourné en utilisant l'option
--allow-root de
lintian
si vous êtes sûr de vous.
La troisième méthode consiste à installer
debuild
setuid root. Ce n'est pas la méthode par défaut, et
nécessitera l'installation en tant que tel par l'administrateur
système. Il faut aussi être conscient que toute personne pouvant
exécuter
debuild en tant que superutilisateur ou setuid root a
un accès complet au système. Cette méthode n'est
pas recommandée, mais fonctionnera.
debuild peut être
installé avec les permissions 4754, de façon à ce que
seuls les membres de son groupe puissent l'exécuter.
L'inconvénient de cette méthode est que les autres utilisateurs
ne pourront plus alors utiliser ce programme. D'autres variantes consistent
à avoir plusieurs copies de
debuild ou d'utiliser des programmes
comme
sudo ou
super pour accorder sélectivement des
droits du superutilisateur à certains utilisateurs. Si l'administrateur
veut utiliser cette méthode, il devra utiliser le programme
dpkg-statoverride pour modifier les permissions de
/usr/bin/debuild. Cela permettra de conserver les permissions
après les mises à jour.
POINTS D'ACCROCHE¶
debuild gère un certain nombre de points d'ancrage
(« hook ») quand il exécute
dpkg-buildpackage. Remarquez que les points d'ancrage entre
clean-hook et
lintian (inclus) sont passées au travers de
dpkg-buildpackage en utilisant leur option
--hook-nom
correspondante. Les points d'ancrage disponibles sont les suivants :
- dpkg-buildpackage-hook
- S'exécute avant le début de dpkg-buildpackage en
appelant dpkg-checkbuilddeps.
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage init de dpkg.
- clean-hook
- S'exécute avant que dpkg-buildpackage lance
debian/rules clean pour nettoyer le source.
(S'exécute même si le source n'est pas nettoyé car
-nc est utilisée.)
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage preclean de dpkg.
- dpkg-source-hook
- S'exécute après le nettoyage du source et avant
l'exécution de dpkg-source (s'exécute même si
dpkg-source n'est pas appelé car -b, -B, ou
-A est utilisée).
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage source de dpkg.
- dpkg-build-hook
- S'exécute après dpkg-source et avant l'appel de
debian/rules build (s'exécute même si ce n'est
qu'une construction du paquet source, donc que
debian/rules build n'est pas appelé).
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage build de dpkg.
- dpkg-binary-hook
- S'exécute entre les appels debian/rules build et
debian/rules binary( -arch). Ne s'exécute
que si un paquet binaire est construit.
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage binary de dpkg.
- dpkg-genchanges-hook
- S'exécute seulement après la construction du paquet et avant
l'appel à dpkg-genchanges.
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage changes de dpkg.
- final-clean-hook
- S'exécute après dpkg-genchanges et avant l'appel
final debian/rules clean (s'exécute même si le
source n'est pas nettoyé après la construction, ce qui est
le comportement par défaut).
- Le point d'ancrage est exécuté dans le source
dépaqueté.
- Correspond au point d'ancrage postclean de dpkg.
- lintian-hook
- S'exécute (une fois) avant l'appel à lintian
(s'exécute même si lintian n'est pas
appelé).
- Le point d'ancrage est exécuté à partir du
répertoire parent du source dépaqueté.
- Correspond au point d'ancrage check de dpkg.
- signing-hook
- S'exécute seulement après l'appel à lintian et
avant la signature (s'exécute même si rien n'est
signé).
- Le point d'ancrage est exécuté à partir du
répertoire parent du source dépaqueté.
- Correspond au point d'ancrage sign de dpkg, mais est
exécuté par debuild.
- post-dpkg-buildpackage-hook
- S'exécute quand tout est fini.
- Le point d'ancrage est exécuté à partir du
répertoire parent du source dépaqueté.
- Correspond au point d'ancrage done de dpkg, mais est
exécuté par debuild.
Une commande de point d'ancrage peut être définie soit dans le
fichier de configuration, par exemple avec DEBUILD_SIGNING_HOOK='toto' (notez
que les tirets ont été modifiés en caractères de
soulignement), ou avec l'option en ligne de commande
--signing-hook-foo. La commande sera en partie modifiée :
%% deviendra un signe
% simple,
%p sera remplacé
par le nom du paquet,
%v par le numéro de version du paquet,
%s par le numéro de version du source et
%u par le
numéro de version amont. Ni
%s ni
%u ne contiendra de
temps absolu (« epoch »).
%a sera
1
si l'action suivante doit être effectuée et
0 dans le cas
contraire (par exemple, dans le crochet
dpkg-source,
%a sera
1 si
dpkg-source doit être lancé et
0
sinon). Elle sera alors passée à l'interpréteur de
commandes pour être traitée, et peut donc inclure des
redirections ou des choses du genre. Par exemple, pour ne lancer que le
crochet
dpkg-source si
dpkg-source doit être
exécutée, le crochet peut ressemble à ceci :
« if [ %a -eq 1 ]; then ...; fi ».
Soyez prudent avec les points d'accroche, puisqu'une mauvaise utilisation
peut empêcher le paquet de se compiler depuis le source. Ils peuvent
être utiles pour prendre des instantanés, etc.
OPTIONS¶
Plus de précisions sont fournies ci-après.
- --no-conf, --noconf
- Ne lire aucun fichier de configuration. L'option ne peut être
utilisée qu'en première position de la ligne de
commande.
- --rootcmd=commande-pour-devenir-superutilisateur,
-rcommande-pour-devenir-superutilisateur
- Commande pour obtenir (ou simuler) les droits du superutilisateur.
- --preserve-env
- Ne pas nettoyer l'environnement, à l'exception du PATH.
- --preserve-envvar=var, -evar
- Ne pas nettoyer la variable d'environnement var.
- Si var se termine par un astérisque
(« * ») alors toutes les variables qui ont une
correspondance avec la portion de var avant l'astérisque
seront préservées.
- --set-envvar=var=valeur,
-evar=valeur
- Définir la variable d'environnement var à
valeur et ne l'enlève pas de l'environnement.
- --prepend-path=valeur
- Une fois que PATH a été normalisé, ajouter
valeur au début.
- --lintian
- Exécuter lintian après dpkg-buildpackage.
C'est le comportement par défaut. Cette option permet de remplacer
une directive contraire placée dans un fichier de
configuration.
- --no-lintian
- Ne pas exécuter lintian après
dpkg-buildpackage.
- --no-tgz-check
- Même si dpkg-buildpackage est exécuté et que
le numéro de version possède une révision pour
Debian, ne pas vérifier si le fichier .orig.tar.gz ou le
répertoire .orig existe avant de démarrer la
construction.
- --tgz-check
- Si dpkg-buildpackage est exécuté et que le
numéro de version possède une révision pour Debian,
vérifier si le fichier .orig.tar.gz ou le répertoire
.orig existe avant de démarrer la construction. C'est le
comportement par défaut.
- --username nom_utilisateur
- Pour les signatures, utiliser debrsign plutôt que
debsign. nom_utilisateur indique l'identifiant à
utiliser.
- --toto-hook=accroche
- Définir un point d'accroche comme décrit ci-dessus. Si
accroche est laissé blanc, le point d'accroche est
annulé.
- --clear-hooks
- Supprimer tous les points d'accroche. Ils peuvent être
réinstaurés par des options ultérieures en ligne de
commande.
- --check-dirname-level N
- Veuillez consulter la section Vérification du nom du
répertoire ci-dessus pour une explication de cette option.
- --check-dirname-regex regex
- Veuillez consulter la section Vérification du nom du
répertoire ci-dessus pour une explication de cette option.
- -d
- Ne pas exécuter dpkg-checkbuilddeps pour vérifier les
dépendances de construction du paquet (« build
dependencies »).
- -D
- Exécuter dpkg-checkbuilddeps pour vérifier les
dépendances de construction.
VARIABLES DE CONFIGURATION¶
Les deux fichiers de configuration
/etc/devscripts.conf et
~/.devscripts sont évalués dans cet ordre par un
interpréteur de commandes (« shell ») pour
placer les variables de configuration. Des options de ligne de commande
peuvent être utilisées pour neutraliser les paramètres
des fichiers de configuration. Les paramètres des variables
d'environnement sont ignorés à cette fin. Si la première
option donnée en ligne de commande est
--noconf, alors ces
fichiers ne sont pas évalués. Les variables actuellement
identifiées sont :
- DEBUILD_PRESERVE_ENV
- Lui attribuer la valeur yes équivaut à utiliser
l'option --preserve-env.
- DEBUILD_PRESERVE_ENVVARS
- Définit les variables d'environnement à conserver. Elle est
constituée d'une liste de variables d'environnement
séparées par des virgules. Cela correspond à utiliser
plusieurs fois les options --preserve-envvar ou -e.
- DEBUILD_SET_ENVVAR_var=valeur
- Équivaut à utiliser
--set-envvar=var=value.
- DEBUILD_PREPEND_PATH
- Équivaut à utiliser --prepend-path.
- DEBUILD_ROOTCMD
- Lui attribuer la valeur prog équivaut à utiliser
-r prog.
- DEBUILD_TGZ_CHECK
- Lui attribuer la valeur no équivaut à utiliser
l'option --no-tgz-check en ligne de commande.
- DEBUILD_SIGNING_USERNAME
- Définir cette variable équivaut à utiliser l'option
--username en ligne de commande.
- DEBUILD_DPKG_BUILDPACKAGE_OPTS
- Voici les options qui devraient être passées à
l'invocation de dpkg-buildpackage. Elles sont données avant
toute option en ligne de commande. À cause des problèmes de
guillemets avec les interpréteurs de commandes, pour les
paramètres contenant un espace, il sera nécessaire d'ajouter
des guillemets supplémentaires. Par exemple, pour forcer à
toujours utiliser votre clef GPG, même pour les envois
parrainés (« sponsored upload »), le
fichier de configuration pourra contenir :
-
DEBUILD_DPKG_BUILDPACKAGE_OPTS="-k'Julian Gilbey <jdg@debian.org>' -sa"
- ce qui fournit exactement deux options. Sans les guillemets
supplémentaires, dpkg-buildpackage se serait plaint
(à juste titre) que Gilbey n'est pas une option reconnue
(elle ne commence pas par un signe -).
- Également, si ce paramètre contient une (ou plusieurs) des
options -r, -d ou -D, elle sera toujours prise en
compte par debuild. Remarquez que l'option -r placée
ici écrasera le paramètre DEBUILD_ROOTCMD.
- DEBUILD_TOTO_HOOK
- La variable de point d'accroche pour le point d'accroche toto.
Voyez la section sur les points d'accroche pour plus de détails.
Par défaut, elle est non définie.
- DEBUILD_LINTIAN
- Lui attribuer la valeur no empêchera l'exécution de
lintian.
- DEBUILD_LINTIAN_OPTS
- Ce sont les options qui doivent être passées lors de
l'invocation de lintian. Elles sont données avant toute
option en ligne de commande, et l'utilisation de cette option est la
même que celle décrite pour la variable
DEBUILD_DPKG_BUILDPACKAGE_OPTS.
- DEVSCRIPTS_CHECK_DIRNAME_LEVEL,
DEVSCRIPTS_CHECK_DIRNAME_REGEX
- Veuillez consulter la section Vérification du nom du
répertoire ci-dessus pour une explication de ces variables.
Remarquez que ce sont des variables de configuration pour tous les outils
du paquet devscripts ; elles impacteront tous les scripts
qui les utilisent, comme indiqué dans leurs pages de manuel
respectives et dans devscripts.conf(5).
EXEMPLES¶
Pour construire votre propre paquet, lancez simplement
debuild depuis
l'arbre des sources. Des options de
dpkg-buildpackage(1) peuvent
être passées en ligne de commande.
La ligne de commande typiquement utilisée pour construire le(s) paquet(s)
binaire(s) sans signer le fichier .changes (ou le fichier .dsc inexistant)
est :
-
debuild -i -us -uc -b
Changez
-b en
-S pour ne construire qu'un paquet source.
Voici un exemple appelant
lintian (et lui fournissant des options) pour
vérifier les paquets créés :
-
debuild --lintian-opts -i
Remarquez bien l'ordre des options : d'abord les options de
debuild, puis celles de
dpkg-buildpackage et enfin celles de
lintian (
lintian est appelé par défaut). Si vous
utilisez toujours les mêmes options de
dpkg-buildpackage, vous
pouvez utiliser l'option
DEBUILD_DPKG_BUILDPACKAGE_OPTS du fichier de
configuration, comme décrit plus haut.
Pour construire un paquet pour un envoi parrainé
(« sponsored upload »), donné par
toto_1.0-1.dsc et les fichiers source respectifs, lancez quelque chose
qui ressemblerait aux commandes suivantes :
-
dpkg-source -x toto_1.0-1.dsc
cd toto-1.0
debuild -k0x12345678
où 0x12345678 est remplacé par l'identifiant de votre clef GPG ou
un autre identifiant de clef tel que votre adresse de messagerie. De nouveau,
vous pouvez également utiliser l'option du fichier de configuration
DEBUILD_DPKG_BUILDPACKAGE_OPTS tel que c'est décrit plus haut
pour éviter d'avoir à taper l'option
-k à chaque
fois que vous effectuez un envoi parrainé.
VOIR AUSSI¶
chmod(1),
debsign(1),
dpkg-buildpackage(1),
dpkg-checkbuilddeps(1),
fakeroot(1),
lintian(1),
su(1),
sudo(1),
super(1),
devscripts.conf(5),
dpkg-statoverride(8)
AUTEUR¶
Le programme
debuild a été initialement écrit par
Christoph Lameter <clameter@debian.org>. La version actuelle a
été écrite par Julian Gilbey <jdg@debian.org>.
TRADUCTION¶
Ce document est une traduction, maintenue à l'aide de l'outil po4a <
https://po4a.alioth.debian.org/> par l'équipe de traduction
francophone du projet Debian.
Nicolas François, Guillaume Delacour, Cyril Brulebois, Thomas Huriaux et
David Prévot ont réalisé cette traduction.
L'équipe de traduction a fait le maximum pour réaliser une
adaptation française de qualité. Veuillez signaler toute erreur
de traduction en écrivant à <
debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur
le paquet devscripts.
La version anglaise la plus à jour de ce document est toujours
consultable en ajoutant l'option «
-L C » à la commande
man.