[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ suivant ]
Tout devrait maintenant être prêt pour construire le paquet.
Pour faire correctement la reconstruction complète d'un paquet, doivent être installés :
le paquet build-essential
;
les paquets énumérés dans le champ Build-Depends, cf. Fichier control
, Section
4.1 ;
les paquets énumérés dans le champ Build-Depends-indep, cf. Fichier control
, Section 4.1.
Ensuite, exécutez la commande suivante dans le répertoire des sources :
$ dpkg-buildpackage
Ceci fera tout le nécessaire pour créer entièrement les paquets binaires et source à votre place :
nettoyage de l'arbre des sources (« debian/rules clean ») ;
construction du paquet source (« dpkg-source -b ») ;
construction du programme (« debian/rules build ») ;
construction des paquets binaires (« fakeroot debian/rules binary ») ;
signature du fichier source .dsc
, en utilisant
gpg
;
création et signature du fichier de téléchargement .changes
, en
utilisant dpkg-genchanges
et gpg
.
Seul votre mot de passe GPG vous sera demandé, deux fois.
Une fois terminé, les fichiers suivants seront dans le répertoire parent
(~/gentoo/
) :
gentoo_0.9.12.orig.tar.gz
C'est le code source d'origine, simplement renommé pour être conforme aux normes Debian. Il a été créé au début avec « dh_make -f ../gentoo-0.9.12.tar.gz ».
gentoo_0.9.12-1.dsc
C'est un résumé du contenu du code source. Il est créé à partir du
fichier control
, et est utilisé pour décompresser les sources
avec dpkg-source(1)
. C'est un fichier signé avec GPG, de sorte
que les gens peuvent être sûrs qu'il s'agit bien du vôtre.
gentoo_0.9.12-1.debian.tar.gz
Cette archive compressée contient le répertoire debian
. Tous
les ajouts et modifications au code source d'origine sont conservés en tant
que correctifs quilt
dans debian/patches
.
Si quelqu'un d'autre veut recréer le paquet depuis le début, il peut facilement le faire en utilisant ces trois fichiers. La procédure d'extraction est facile : copier simplement ces trois fichiers quelque part et exécuter « dpkg-source -x gentoo_0.9.12-1.dsc ». [42]
gentoo_0.9.12-1_i386.deb
C'est le paquet binaire terminé. Vous pouvez utiliser dpkg
pour
l'installer ou le retirer comme n'importe quel autre paquet.
gentoo_0.9.12-1_i386.changes
Ce fichier contient toutes les modifications effectuées dans la révision
actuelle du paquet, et est utilisé par les programmes de maintenance des
archives FTP Debian pour y installer les paquets binaires et sources. Il est
partiellement créé à partir des fichiers changelog
et
.dsc
. Ce fichier est signé avec GPG, de sorte que les gens
peuvent être sûrs qu'il s'agit bien du vôtre.
Au fur et à mesure que vous travaillez sur le paquet, son comportement va
évoluer et de nouvelles fonctionnalités seront ajoutées. Les gens qui
téléchargent votre paquet peuvent lire ce fichier et voir rapidement ce qui a
changé. Les programmes de maintenance des archives Debian vont aussi poster
le contenu de ce fichier sur la liste de diffusion debian-devel-announce@lists.debian.org
.
Les longues chaînes de chiffres dans les fichiers .dsc
et
.changes
sont les sommes MD5, SHA1 et SHA256 des fichiers
mentionnés. Les personnes téléchargeant vos fichiers peuvent les tester
avec md5sum(1)
, sha1sum(1)
ou
sha256sum(1)
, et si les fichiers ne correspondent pas, elles
sauront que le fichier a été corrompu ou falsifié.
Debian gère de nombreux portages
avec le réseau de serveurs d'empaquetage
automatique
faisant fonctionner des démons buildd
sur
de nombreux ordinateurs d'architectures différentes. Même si vous n'avez pas
besoin de le faire vous-même, vous devriez être au courant de ce qui va
arriver à vos paquets. La suite présente brièvement comment les paquets
sont reconstruits sur ces différentes architectures. [43]
Les paquets « Architecture: any » sont reconstruits par les serveurs d'empaquetage automatique. Seront installés :
le paquet build-essential
;
les paquets énumérés dans le champ Build-Depends, cf. Fichier control
, Section 4.1.
Ensuite, la commande suivante est exécutée dans le répertoire des sources :
$ dpkg-buildpackage -B
Ceci fera tout le nécessaire pour créer entièrement les paquets binaires dépendants de l'architecture sur l'architecture concernée :
nettoyage de l'arbre des sources (« debian/rules clean ») ;
construction du programme (« debian/rules build ») ;
construction des paquets binaires dépendants de l'architecture (« fakeroot debian/rules binary-arch ») ;
signature du fichier source .dsc
, en utilisant
gpg
;
création et signature du fichier de téléchargement .changes
, en
utilisant dpkg-genchanges
et gpg
.
C'est pourquoi votre paquet est disponible sur plusieurs architectures.
Bien qu'il soit nécessaire d'installer les paquets énumérés dans le champ
Build-Depends-indep pour l'empaquetage normal (cf. Reconstruction complète, Section 6.1), il n'est
pas nécessaire de les installer sur le serveur d'empaquetage automatique
puisqu'il ne construit que les paquets binaires dépendants de l'architecture.
[44] Cette différence entre
l'empaquetage normal et celui des serveurs d'empaquetage automatique permet de
déterminer si les paquets doivent être énumérés dans le champ
Build-Depends ou Build-Depends-indep du fichier
debian/control
, cf. Fichier
control
, Section 4.1.
orig.tar.gz
pour l'envoi
Lors du premier envoi d'un paquet vers l'archive, il faut inclure les sources
orig.tar.gz
d'origine. Si la dernière entrée du journal de
modification n'est pas la première pour cette version amont, vous devez passer
l'option « -sa » à la commande
dpkg-buildpackage
. D'un autre côté, l'option
« -sd » forcera l'exclusion des sources
orig.tar.gz
originales.
Vous pouvez automatiser encore plus le processus de construction de la commande
dpkg-buildpackage
avec la commande debuild
, cf.
debuild(1)
.
La configuration de la commande debuild
peut être faite via
/etc/devscript.conf
ou ~/.devscript
. Les entrées
suivantes sont suggérées :
DEBSIGN_KEYID="Votre_ID_cle_GPG" DEBUILD_LINTIAN=yes DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
Ainsi, les paquets seront signés avec votre identifiant de clé GPG (bon pour
les paquets parrainés) et vérifiés avec la commande lintian
en
détail.
Le nettoyage des sources et la reconstruction du paquet avec un compte utilisateur est aussi simple que :
$ debuild
Remarquez que le paramètre « -sa » de
dpkg-buildpackage
pour intégrer les sources d'origine
orig.tar.gz
peut être précisé :
$ debuild -sa
Le nettoyage de l'arborescence des sources est aussi simple que :
$ debuild clean
Pour un environnement de construction propre (chroot
) permettant
de vérifier les dépendances de construction, pbuilder
est très
utile. [45] Cela garantit une
construction propre des sources en construction automatique sous
sid pour différentes architectures et évite l'erreur de gravité
sérieuse FTBFS (« Fails To Build From Source » pour les échecs de
construction à partir du paquet source), qui est toujours en catégorie RC
(« Release Critical », bloquant la publication). Voir http://buildd.debian.org/
pour plus
d'informations sur le constructeur automatique de paquet Debian.
Le paquet pbuilder
est personnalisable de la manière
suivante :
configuration du répertoire /var/cache/pbuilder/result
accessible
en écriture pour l'utilisateur ;
création d'un répertoire, par exemple
/var/cache/pbuilder/hooks
, accessible en écriture pour
l'utilisateur pour y placer ses scripts hook ;
configuration de ~/.pbuilderrc
or /etc/pbuilderrc
pour intégrer :
AUTO_DEBSIGN=yes HOOKDIR="/var/cache/pbuilder/hooks"
Les paquets créés seront alors signés avec votre clé GPG du répertoire
~/.gnupg/
.
Le système chroot
local de pbuilder
doit d'abord
être initialisé :
$ sudo pbuilder create
Si vous possédez déjà les paquets sources terminés, exécutez les commande
suivantes dans le répertoire contenant les fichiers
toto.orig.tar.gz
,
toto.debian.tar.gz
, et toto.dsc
pour mettre à jour le système chroot
de pbuilder
et
y construire les paquets binaires :
$ sudo pbuilder --update $ sudo pbuilder --build toto.dsc
Remarquez que le paramètre « -sa » de
dpkg-buildpackage
pour intégrer les sources d'origine
orig.tar.gz
peut être précisé :
$ sudo pbuilder --build --debbuildopts "-sa" toto.dsc
Les paquets nouvellement créés sont accessibles en
/var/cache/pbuilder/result/
et n'appartiennent pas au
superutilisateur.
Si vous possédez déjà l'arborescence des sources à jour, sans avoir créé
les paquets sources correspondants, exécutez plutôt les commande suivantes
dans le répertoire des sources avec le répertoire debian
:
$ sudo pbuilder --update $ pdebuild
Remarquez que le paramètre « -sa » de
dpkg-buildpackage
pour intégrer les sources d'origine
orig.tar.gz
peut être précisé :
$ pdebuild --debbuildopts "-sa"
Vous pouvez vous connecter à l'environnement chroot
avec la
commande « pbuilder --login --save-after-login » et le
configurer à votre convenance. Cet environnement peut être sauvegardé en
quittant l'invite de commande avec ^D (Contrôle-D).
La dernière version de la commande lintian
peut être exécutée
dans l'environnement chroot en utilisant le script hook
/var/cache/pbuilder/hooks/B90lintian
configuré comme
suit : [46]
#!/bin/sh set -e install_packages() { apt-get -y --force-yes install "$@" } install_packages lintian echo "+++ début de lintian +++" su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes" - pbuilder # utilisez ceci si vous ne voulez pas que lintian arrête la construction #su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" - pbuilder echo "+++ fin de lintian +++"
Un environnement sid à jour est nécessaire pour construire
correctement les paquet destinés à sid. En fait,
sid peut parfois être victime de problèmes qui peuvent rendre
non souhaitable la migration de votre système complet. Le paquet
pbuilder
peut vous aider à faire face à ce genre de situation.
Vous pouvez avoir besoin de mettre à jour vos paquets stable
après sa publication à destination de stable-proposed-updates,
stable/updates, etc. [47] Dans ces cas-là, « j'utilise
sid » est une mauvaise excuse pour ne pas les mettre à jour
au plus tôt. Le paquet pbuilder
vous permet d'accéder à la
plupart des distributions dérivées de Debian pour la même architecture de
microprocesseur.
Voir http://www.netfort.gr.jp/~dancer/software/pbuilder.html
,
pdebuild(1)
, pbuilderrc(5)
, et
pbuilder(8)
.
Si les développeurs amont utilisent un système de gestion de version
(VCS
)
pour maintenir leur code source, vous devriez envisager de l'utiliser. Cela
rend la fusion et la sélection (« cherry-picking ») des correctifs
amont plus facile. De nombreux paquets de scripts d'enrobage sont disponibles
pour la construction de paquets Debian pour chaque système de gestion de
version :
git-buildpackage
: assistants pour les paquets Debian en
dépôts Git ;
topgit
: gestionnaire de file de correctifs Git ;
svn-buildpackage
: assistants pour la maintenance de paquets
Debian en dépôt Subversion ;
cvs-buildpackage
: scripts pour paquets Debian en dépôt
CVS.
Ces paquets permettent la mise en place d'un environnement de développement
plus agréable que l'utilisation manuelle des commandes quilt
pour
les utilisateurs avancés afin d'automatiser la construction de
paquets. Ils ne seront pas détaillés dans ce tutoriel. [48]
Avec un paquet imposant, vous ne voudrez sans doute pas reconstruire depuis le
début chaque fois que vous faites une petite modification à
debian/rules
. Pour tester, vous pouvez faire un fichier
.deb
sans reconstruire les sources amont comme ceci [49] :
$ fakeroot debian/rules binary
Ou, simplement comme ceci pour voir s'il y a construction ou non :
$ fakeroot debian/rules build
Une fois terminés vos ajustements, souvenez-vous de reconstruire en suivant la
procédure correcte ci-dessus. Vous pouvez être incapable d'envoyer
proprement si vous essayez d'envoyer des fichiers .deb
construits
de cette façon.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ suivant ]
Guide du nouveau responsable Debian
version 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.org
frederic.dumont@easynet.be
adn+deb@diwi.org
david@tilapin.org
debian-l10n-french@lists.debian.org