NOM

cowpoke - Construire un paquet source Debian dans une instance de cowbuilder distante

SYNOPSIS

cowpoke [options] paquet.dsc
 

DESCRIPTION

Envoyer un paquet source Debian à un hôte cowbuilder et construire le paquet. Le paquet résultant peut également être signé et envoyé dans une file d'attente.
 
 

OPTIONS

Les options suivantes sont disponibles :
 
--arch=architecture
Indiquer la ou les architectures Debian pour lesquelles le paquet doit être construit. Une liste d'architectures séparées par des espaces peut être utilisée pour construire le paquet pour toutes ces architectures en une seule passe. Les noms d'architecture supportés sont ceux renvoyés par dpkg-architecture(1) pour DEB_BUILD_ARCH.
--dist=distribution
Indiquer la ou les distributions Debian pour lesquelles le paquet doit être construit. Une liste de distributions séparées par des espaces peut être utilisée pour construire le paquet pour toutes ces distributions en une seule passe. Des noms de code (comme sid ou squeeze) ou des noms de distribution (comme unstable ou experimental) peuvent être utilisés, mais vous devriez toujours utiliser un type de noms ou l'autre parce que c'est ce nom qui est utilisé pour les chemins de fichier et pour trouver les anciens paquets utilisés pour les rapports de comparaison. Utiliser des noms définis localement est maintenant aussi possible avec cette option, quand elle est utilisée conjointement à l’option BASE_DIST dans un fichier de configuration. Cela permet la maintenance et l’utilisation de chroots de construction configurés spécialement, afin par exemple de fournir les dépendances de paquet des archives de rétroportages ou d’un dépôt local, ou de définir des options de configuration non habituelles, sans polluer les chroots propres utilisés pour les constructions de paquet à destination des dépôts principaux. Consultez la description de BASE_DIST ci-dessous.
--buildd=hôte
Indiquer l'hôte distant sur lequel se fera la construction.
--buildd-user=nom
Indiquer l'utilisateur distant à utiliser pour la construction.
--create
Créer la racine cowbuilder distante si elle n'existe pas encore. Si cette option n'est pas fournie, une distribution ou architecture (indiquées par --dist ou --arch) qui n'aurait pas de racine cowbuilder sera considérée comme une erreur. L’utilisateur indiqué par --buildd-user doit avoir le droit de créer RESULT_DIR sur l’hôte de construction, sinon un administrateur avec les droits nécessaires doit d’abord le créer et donner à cet utilisateur (ou à un groupe dont il fait partie) accès en écriture à ce répertoire, afin que cette option réussisse.
--return=[chemin]
Copier les fichiers résultant de la construction vers chemin. Si aucun chemin n'est indiqué, ils sont alors renvoyés vers le répertoire actuel. Le chemin donné doit exister, il ne sera pas créé.
--no-return
Ne pas copier le résultat de la construction vers RETURN_DIR (écrase le chemin configuré dans les fichiers de configuration).
--dpkg-opts='opt1 opt2 ...'
Indiquer des options supplémentaires à fournir à dpkg-buildpackage(1). les différentes options sont séparées par des espaces. Cela remplacera toute option fournie par la variable DEBBUILDOPTS du fichier pbuilderrc de la machine de construction.
--create-opts='option de cowbuilder'
Indiquer des arguments supplémentaires à passer directement à cowbuilder quand un chroot est créé (en utilisant l’option --create précédente). Si plusieurs arguments doivent être passés, cette option devrait être indiquée séparément pour chacun. Par exemple, --create-opts "--othermirror" --create-opts "deb http:// ..." Cette option remplacera toutes les CREATE_OPTS indiquées pour un chroot dans les fichiers de configuration de cowpoke.
--update-opts='option de cowbuilder'
Indiquer des arguments supplémentaires à passer directement à cowbuilder si la base du chroot est mise à jour. Si plusieurs arguments doivent être passés, cette option devrait être indiquée séparément pour chacun. Cette option remplacera toutes les UPDATE_OPTS indiquées pour un chroot dans les fichiers de configuration de cowpoke.
--build-opts='option de cowbuilder'
Indiquer des arguments supplémentaires à passer directement à cowbuilder quand un paquet est construit. Si plusieurs arguments doivent être passés, cette option devrait être indiquée séparément pour chacun. Cette option remplacera toutes les BUILD_OPTS indiquées pour un chroot dans les fichiers de configuration de cowpoke.
--sign=identifiant_clef
Indiquer la clef à utiliser pour signer les paquets. Cela remplacera toutes les SIGN_KEYID indiquées pour un chroot dans les fichiers de configuration de cowpoke.
--upload=file
Indiquer la file dput à utiliser pour envoyer les paquets signés. Cela remplacera toutes les UPLOAD_QUEUE indiquées pour un chroot dans les fichiers de configuration de cowpoke.
--help
Afficher un bref résumé des options disponibles et de la configuration en cours.
--version
Afficher les informations sur la version.

OPTIONS DE CONFIGURATION

Quand cowpoke est exécuté, les options de configuration suivantes sont lues dans le fichier de configuration global, celui de l'utilisateur et du projet, s'ils sont présents. Les chemins peuvent être indiqués de façon absolue ou relative (les chemins étant alors relatifs au répertoire personnel de l'utilisateur BUILDD_USER). Les chemins étant généralement fournis entre guillemets, l'expansion des tildes ne sera pas réalisée.
 

Valeurs globales par défaut

Elles s'appliquent à chaque architecture et distribution lors d'un appel à cowpoke.
 
BUILDD_HOST
L'adresse réseau ou le nom complètement qualifié (FQDN) de la machine de construction où cowbuilder est configuré. Elle peut être modifiée avec l'option en ligne de commande --buildd.
BUILDD_USER
Le nom de l'utilisateur, non privilégié, sur la machine de construction. Le nom par défaut est le nom de l'utilisateur local qui exécute cowpoke (ou le nom d'utilisateur précisé dans la configuration SSH pour BUILDD_HOST), et le nom fournit par la variable d'environnement peut être remplacé avec l'option --buildd-user en ligne de commande.
BUILDD_ARCH
La ou les architectures Debian pour lesquelles il faut construire les paquets. Cela doit correspondre à la valeur de DEB_BUILD_ARCH du chroot de construction utilisé. La valeur par défaut est l'architecture de la machine sur laquelle cowpoke est exécutée, et l'architecture peut être remplacée avec l'option --arch en ligne de commande. Une liste d'architectures séparées par des espaces (il peut être nécessaire de fournir le tout entre guillemets) peut être utilisée pour construire les paquets pour toutes ces architectures en une seule passe.
BUILDD_DIST
La ou les distributions Debian pour lesquelles il faut construire les paquets. Une liste de distributions séparées par des espaces (il peut être nécessaire de fournir le tout entre guillemets) peut être utilisée pour construire les paquets pour toutes ces architectures en une seule passe. La ou les distributions peuvent être remplacées avec l'option --dist en ligne de commande.
INCOMING_DIR
Le chemin du répertoire sur la machine de construction où sont placés initialement les paquets source. Il doit être accessible en écriture par l'utilisateur BUILDD_USER.
PBUILDER_BASE
La racine du système de fichiers pour tous les fichiers CoW et les fichiers résultats. Des sous-répertoires spécifiques aux architectures et aux distributions seront normalement créés sous cette racine. Le cache d'apt et les répertoires temporaires de construction se trouveront également sous ce chemin.
SIGN_KEYID
Si cette option est activée, elle doit contenir l'identifiant de la clef GPG à fournir à debsign(1) si les paquets doivent être signés sur la machine distante. Il vous sera demandé si vous souhaitez signer les paquets après que toutes les constructions sont finies. Si cette option n'est pas activée ou si elle contient une chaîne vide, aucune tentative de signature ne sera effectuée. Elle peut être remplacée de façon spécifique à une architecture et une distribution avec l’option arch_dist_SIGN_KEYID décrite ci-dessous, ou par invocation avec l’option --sign en ligne de commande.
UPLOAD_QUEUE
Si cette option est activée, elle doit contenir une indication d'hôte pour dput(1) qui sera utilisée pour envoyer les paquets après qu'ils ont été signés. Il vous sera demandé de confirmer si vous souhaitez envoyer les paquets après qu'ils ont été signés. Si cette option n'est pas activée ou si elle contient une chaîne vide, aucune tentative d'envoi ne sera effectuée. Si SIGN_KEYID n'est pas activée, cette option sera complètement ignorée. Elle peut être remplacée de façon spécifique à une architecture et une distribution avec l’option arch _dist_UPLOAD_QUEUE décrite ci-dessous, ou par invocation avec l’option --upload en ligne de commande.
BUILDD_ROOTCMD
La commande à utiliser pour obtenir les droits du superutilisateur sur la machine distante de construction. Si elle n'est pas définie, la commande par défaut est sudo(8). Elle n'est nécessaire que pour appeler cowbuilder et lui permettre d'entrer dans son chroot. Vous pouvez donc n'autoriser cet utilisateur à acquérir des droits supplémentaires que pour l'exécution de cette commande. La ligne suivante dans sudoers permettra d'appeler cowbuilder sans avoir à fournir de mot de passe :
utilisateur ALL = NOPASSWD: /usr/sbin/cowbuilder
Autrement, vous pouvez utiliser SSH avec une clef ou tout autre mécanisme correspondant à votre politique locale. su -c n'est pas vraiment utilisable ici parce qu'il nécessite de placer des guillemets autour, contrairement aux autres.
DEBOOTSTRAP
L'utilitaire à utiliser pour créer une nouvelle racine de construction. Les possibilités sont debootstrap ou cdebootstrap.
RETURN_DESTDIR
Si elle est définie, les fichiers de paquet issus de la construction seront copiés à l'endroit (local ou distant) configuré, une fois la construction terminée. Le chemin doit exister, il ne sera pas créé. Cette option n'est pas définie par défaut et peut être écrasée par --return ou --no-return.

Options spécifiques à des architectures ou distributions

Ce sont des variables de la forme $arch_$dist _VAR qui ne s'appliquent qu'à une cible de construction spécifique à une architecture et à une distribution.
 
arch_dist_RESULT_DIR
Le chemin du répertoire de la machine de construction où les paquets résultants (source et binaires) seront trouvés, et où les versions ultérieures des paquets ayant été précédemment construits pourront être trouvées. Si des anciens paquets sont trouvés, debdiff sera utilisé pour comparer le nouveau paquet avec la version précédente une fois la construction finie, et le résultat se trouvera dans le journal de construction. Les fichiers du répertoire doivent être lisibles par BUILDD_USER pour les vérifications par lintian(1) et debdiff(1) ainsi que pour les envois par dput(1). Si cette option n'est pas définie pour certaines combinaisons d'architectures et de distributions, alors le chemin par défaut sera $PBUILDER_BASE/$arch/$dist/result
arch_dist_BASE_PATH
Le répertoire ou les fichiers CoW maîtres se trouvent (ou là où ils sont créés si l'option en ligne de commande --create est utilisée). Si cette option n'est pas définie pour une combinaison d'architecture et de distribution, alors le chemin par défaut est $PBUILDER_BASE/$arch/$dist/base.cow
arch_dist_BASE_DIST
Le nom de code à passer à l’option --distribution de cowbuilder à la place de dist. C’est nécessaire quand dist est un nom localement significatif utilisé pour un chroot de construction configuré spécialement, comme par exemple "wheezy_backports", et non le nom de suite formel d’une distribution connue de debootstrap. Cette option ne peut pas être remplacée en ligne de commande, puisqu’il n’y pas vraiment de raison de la modifier pour les appels individuels de cowpoke. Si cette option n’est pas indiquée pour une combinaison d’ architecture et de distribution, alors la distribution est utilisée par défaut.
arch_dist_CREATE_OPTS
Un tableau bash contenant des options supplémentaires à passer directement à cowbuilder quand un chroot est créé (en utilisant l’option --create). C’est pratique quand des options comme --othermirror sont voulues pour créer des configurations spéciales de chroot, comme par exemple "wheezy_backports". Par défaut il n’est pas défini. Toutes les valeurs définie dans ce tableaux seront ignorées si l’option --create-opts est passée en ligne de commande. Chaque élément de ce tableau correspond à un seul argument (dans le sens de ARGV) qui sera passé à cowbuilder. Cela permet à ces arguments, qui pourraient contenir des espaces, avoir des besoins de protection bizarre ou d’autres caractères spéciaux, de pas ne pas être déformés avant d’atteindre cowbuilder. Les tableaux bash sont initialisés un utilisant le format suivant :
OPTS=( "arg1" "arg 2" "--option" "valeur" "--opt=val" "etc." )
arch_dist_UPDATE_OPTS
Un tableau bash contenant des options supplémentaires à passer directement à cowbuilder à chaque fois que la base de ce chroot est mise à jour. Le comportement est similaire à l’option CREATE_OPTS précédente, à part qu’il est déclenché quand le chroot est mis à jour.
arch_dist_BUILD_OPTS
Un tableau bash contenant des options supplémentaires à passer directement à cowbuilder quand un paquet est construit. C’est pratique pour utiliser une option comme --twice que cowpoke n’a pas besoin de gérer directement. Le comportement est sinon similaire à l’option UPDATE_OPTS précédente, à part qu’il est déclenché pendant la phase de construction par cowbuilder.
arch_dist_SIGN_KEYID
Un remplacement facultatif de l’option SIGN_KEYID globale, spécifique à une architecture et une distribution.
arch_dist_UPLOAD_QUEUE
Un remplacement facultatif de l’option UPLOAD_QUEUE globale, spécifique à une architecture et une distribution.

FICHIERS DE CONFIGURATION

/etc/cowpoke.conf
Options de configuration globales. Elles remplaceront les valeurs par défaut codées en dur.
~/.cowpoke
Options de configuration de l'utilisateur. Elles remplaceront les valeurs des options de configuration globales.
.cowpoke
Options de configuration du projet. Elles remplaceront les valeurs des options de configuration globale ou de l'utilisateur si cowpoke est appelé depuis le répertoire où se trouve le fichier. Si la variable d'environnement COWPOKE_CONF est définie, elle indique un fichier de configuration supplémentaire qui remplacera tous les autres. Les options utilisées explicitement sur la ligne de commande remplacent les options provenant des fichiers de configuration.

CONFIGURATION DE COWBUILDER

Il n'y a rien de particulier à faire pour configurer une instance de cowbuilder pour qu'elle puisse être utilisée avec cowpoke. Créez-la simplement telle que vous en avez besoin avec " cowbuilder --create" en suivant la documentation de cowbuilder, puis configurez cowpoke avec les informations sur l'utilisateur, l'architecture et le chemin nécessaire pour y accéder sur les machines où vous souhaitez l'appeler (ou configurez cowpoke avec les informations sur le chemin, l'architecture et la distribution et fournissez lui l'option --create lors du premier appel). L'hôte de construction sur lequel cowbuilder tourne n'a pas besoin que cowpoke soit installé localement.
 
La machine de construction doit avoir les paquets lintian et devscripts installés pour les vérifications en fin de construction. Une fois la construction finie, un journal et les résultats des tests automatiques seront enregistrés dans INCOMING_DIR. Si vous souhaitez envoyer des paquets signés, dput(1) devra également être installé sur la machine de construction et devra être configuré pour utiliser l'alias hôte indiqué par UPLOAD_QUEUE. Si rsync(1) est disponible à la fois sur la machine locale et la machine de construction, alors il peut être utilisé pour transférer le paquet source (cela permet d'économiser quelques échanges de orig.tar.* lors de la construction des révisions Debian suivantes).
 
L'utilisateur qui exécute cowpoke doit avoir un accès SSH à la machine de construction en tant que BUILDD_USER. Cet utilisateur doit pouvoir exécuter cowbuilder en tant que superutilisateur en utilisant BUILDD_ROOTCMD. Les clefs pour les signatures n'ont pas nécessairement à être installées sur la machine de construction (et elles seront ignorées si elles le sont). Si un paquet est signé, les clefs seront nécessaires sur la machine qui exécute cowpoke.
 
Quand cowpoke est appelé, il cherche d'abord à mettre à jour l'image cowbuilder si cela n'a pas déjà été fait le même jour. Cette vérification se base sur la présence d'un fichier cowbuilder-$arch-$dist-update-log-$date dans le répertoire INCOMING_DIR. Vous pouvez déplacer, renommer ou toucher ce fichier si vous souhaitez que l'image soit mise à jour plus ou moins souvent. Son contenu liste les sorties de cowbuilder pendant la mise à jour (ou la création) de la racine de construction.
 
 

NOTES

Puisque cowbuilder crée un chroot, et qu'il faut pour cela être superutilisateur, cowpoke nécessite également certains des droits du superutilisateur. Et toutes les horreurs qui peuvent arriver à cause de ça pourront vous arriver un jour. cowbuilder est connu pour avoir accidentellement écrasé des systèmes de fichiers montés avec l'option "bind" en dehors de son chroot, et pire encore peut arriver. Soyez prudents, conservez des sauvegardes de ce que vous ne souhaitez pas perdre sur vos machines de construction et utilisez cowpoke pour isoler tous ces problèmes sur une machine qui n'est pas votre machine de développement avec vos quelques heures de travail non committé.
 

VOIR AUSSI

cowbuilder(1), pbuilder(1), ssh-agent(1), sudoers(5)
 

AUTEUR

cowpoke a été écrit par Ron <[email protected]>.
 

TRADUCTION

Ce document est une traduction, maintenue à l'aide de l'outil po4a < https://po4a.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 à < [email protected]> 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.