Ce guide vous aidera a configurer et personnaliser votre environnement pour pbuilder. Pbuilder est un environnement de construction propre afin de compiler et d’empaqueter un logiciel au format deb à destination des distributions Ubuntu ou Debian. L’avantage de pbuilder est d’éviter de polluer votre machine avec les paquets de développement et d’être certain d’avoir déclaré les bonnes dépendances pour la fabrication de votre paquet. A chaque nouvelle compilation, l’environnement est effectivement reconstruit à partir d’une base verge.
Avant d’attaquer ce guide, je vous conseille d’avoir déjà des bases sur la compilation des paquets sous Debian/Ubuntu, de comprendre comment fonctionne un dépôt et la signature des paquets. Il existe un guide officiel sur le site de Debian à l’adresse suivante.
https://www.debian.org/doc/manuals/maint-guide/index.fr.html
Avant de pouvoir compiler un paquet, il est nécessaire de construire un ou plusieurs environnement pour pbuilder. En effet, il est recommandé de construire la base i386 et amd64 afin de pouvoir fournir les paquets pour les deux architectures processeur. Attention toute fois, vous ne serez pas capable de compiler des paquets pour amd64 si votre distribution est installée en i386, il est donc recommandé de systématiquement utiliser une distribution amd64.
Dans ce guide, j’utiliserais Debian Wheezy dans mon environnement de pbuilder pour construire des paquets. Cependant, le système hôte pour tourner sous n’importe quelle distribution (Debian ou Ubuntu). Il semblerait même qu’il existe le logiciel pbuilder sur d’autres distributions GNU/Linux.
La première étape est d’installer pbuilder sur votre système hôte :
apt-get install pbuilder
Nous allons ensuite configurer l’environnement amd64 pour pbuilder. Notez qu’un environnement n’est autre qu’un debootstrap compressé. La compilation se fera ensuite dans un chroot de cet environnement.
pbuilder --create --architecture amd64 --distribution wheezy --basetgz /var/cache/pbuilder/wheezy-amd64.tgz --mirror http://ftp.fr.debian.org/debian
Ceci vous créera le fichier /var/cache/pbuilder/wheezy-amd64.tgz qui sera une base minimal Debian. Créez maintenant la base i386.
pbuilder --create --architecture i386 --distribution wheezy --basetgz wheezy-i386.tgz --mirror http://ftp.fr.debian.org/debian
Si vous souhaitez ajouter les backports de Debian, utilisez les lignes suivante.
pbuilder --create --architecture amd64 --distribution wheezy --basetgz /var/cache/pbuilder/wheezy-amd64.tgz --mirror http://ftp.fr.debian.org/debian --othermirror "deb http://ftp.fr.debian.org/debian wheezy-backports main"
Et pour i386 :
pbuilder --create --architecture i386 --distribution wheezy --basetgz /var/cache/pbuilder/wheezy-i386.tgz --mirror http://ftp.fr.debian.org/debian --othermirror "deb http://ftp.fr.debian.org/debian wheezy-backports main"
Cette base sera très pratique pour développer avec la base de Wheezy. Cependant, il peut être utile d’ajouter des dépôts tiers comme source de compilation.
Il est possible de personnaliser votre environnement de développement. Par exemple, ajouter un dépôt tiers peut s’avérer très utile.
Personnalisation de la version amd64 :
pbuilder login --save-after-login --basetgz /var/cache/pbuilder/base-amd64.tgz
Ou pour la version i386 :
pbuilder login --save-after-login --basetgz /var/cache/pbuilder/base-i386.tgz
Vous vous retrouvez ensuite dans un chroot de votre environnement. Tous les changements appliqué maintenant seront répercutés dans la base qui servira pour la compilation.
Modifier donc ensuite le fichier avec
nano /etc/apt/sources.list
Puis ajouter vos dépôts. N’oubliez pas également d’installer le certificat.
Petite astuce : la commande wget n’est pas installée dans votre environnement, plutôt que de l’installer, ouvrez un autre terminal et copiez le fichier vers /var/cache/pbuilder/build/xxxxx (xxxxx est un nombre aléatoire).
Une fois votre environnement prêt, il est temps de passer aux choses sérieuses, la compilation de
Si vous souhaitez tenter de porter un paquet pour votre distribution (de Ubuntu ou Debian Sid vers Debian Wheezy), l’opération devrait être relativement simple.
D’abord, récupérez les fichiers sources. Il existe différentes méthodes, soit récupérer les fichiers sur un ppa, ou bien depuis le site de Debian, ou bien encore depuis un dépôt directement. Généralement trois fichiers sont nécessaires :
Une fois ces trois fichiers à disposition, tapez simplement depuis votre terminal la commande suivante.
pbuilder --build --architecture amd64 --basetgz /var/cache/pbuilder/base-amd64.tgz xxxx_y.y.y-y.dsc
Et la suivante pour l’architecture i386.
pbuilder --build --architecture i386 --basetgz /var/cache/pbuilder/base-i386.tgz xxxx_y.y.y-y.dsc
Une fois la compilation et l’empaquetage terminé, placez vous dans le dossier /var/cache/pbuilder/result/. Vous devriez trouver un ou plusieurs paquets suivant ce que vous venez de compiler.
Si vous ne possédez pas encore de fichier .dsc, vous pouvez vous placer dans le dossier de votre paquet source, à condition d’avoir le dossier debian contenant les règles. Vous pouvez créer ce dossier debian, mais je ne vais pas vous le décrire ici car ce n’est pas l’objet de ce guide. Un guide complet est disponible ici.
https://www.debian.org/doc/manuals/maint-guide/index.fr.html
Une fois placé dans votre dossier, tapez la commande suivante pour lancer la fabrication des paquets.
pdebuild --use-pdebuild-internal -- --basetgz /var/cache/pbuilder/base-amd64.tgz
Attention, les paquets compilés ne se retrouvent pas dans /var/cache/pbuilder/result comme précédemment, mais dans le dossier parent au dossier dans lequel vous avez votre code source
Pour la version i386, vous avez le choix ensuite soit de lancer la commande pdebuild en utilisant la base i386, soit d’utiliser pbuilder sur le fichier dsc qui est maintenant géré dans le dossier parent de votre code source.
Dans le cas ou votre paquet contruit des paquets all (c’est à dire installable sur n’importe quelle architecture processeur) et en même temps de paquets dépendant du processeur, vous pouvez indiquez à pbuilder ou pdebuild de ne construire que les paquets non all.
pdebuild --use-pdebuild-internal -debbuildopts -B -- --basetgz /var/cache/pbuilder/base-amd64.tgz
Une fois vos paquets terminés et prêt à l’emploi, vous serez certainement intéressés par signer vos paquets. Habituellement, vos paquets sont signés automatiquement en utilisant votre email depuis le fichier changelog. Hors dans le cas d’un portage, vous n’êtes certainement pas le mainteneur du paquet et vous n’avez pas changé le fichier changelog. Mais vous pouvez signer simplement vos paquets à l’aide de la commande suivante.
debsign -e monmail@example.com xxxx_y.y.y-y_zzzz.changes