Mon pbuilderrc utilisant qemu-debootstrap

Feb. 24, 2012

Bonjour à tous.

Comme vous le savez déjà, je passe beaucoup de temps sur tout ce qui est packaging Debian, tant sur le côté pratique que théorique de la chose.

Récemment, je suis devenu mainteneur Debian des paquets audacious et audacious-plugins. Et d’ici quelques semaines, je deviendrai co-mainteneur du paquet nginx sous debian.

En dehors de ça, j’essaye d’améliorer le travail en équipe au niveau du packaging nginx en fixant des objectifs à atteindre pour la prochaine freeze, et en essayant d’impliquer tous les co-mainteneurs dès qu’une décision importante doit être prise (upload d’une nouvelle version, ajout/suppression d’un module, etc…). Ce qui porte pas mal ses fruits, et on commence à bien travailler en équipe.

Mais sans environnement de compilation, le packaging Debian serait similaire au fait de jouer à la roulette russe avec une Gatling.

Pourquoi ?.

La raison est simple.

Avant d’uploader un paquet source dans Debian, il vaut mieux tester sa compilation dans un environnement le plus vierge possible, afin d’être certain des dépendances de compilation (les fameuses build-dep) et des dépendances binaires. Compiler un paquet en local ne garantit aucunement la bonne compilation d’un paquet, car comme tout utilisateur, on a déjà des paquets installés sur la machine, dont certains sont des dépendances de compilation, ce qui peut fausser l’appréciation de la justesse du paquet.

Pour avoir un environnement vierge, il existe plusieurs méthodes, dont voici une liste :

Comme vous avez dû le deviner, je vais parler de l’outil pbuilder.

Pbuilder peut se configurer à l’aide d’un fichier nommé pbuilderrc, souvent placé dans $HOME/.pbuilderrc, qui est un script bash, que pbuilder lit et exécute avant de commencer à travailler selon les actions qu’on lui ordonne.

Comme déjà expliqué dans les billets La machine ultime pour compiler ses paquets debian et Pbuilder et tmpfs peuvent être bons amis, le fichier .pbuilderrc permet de configurer tous les aspects de la création et de l’utilisation de ces chroots.

À force de travailler pour personaliser ma configuration, j’en suis arrivé à écrire un pbuilderrc assez complet, qui peut gérer plusieurs aspects de l’utilisation des pbuilders, y compris l’utilisation de qemu-debootstrap, qui est un debootstrap plus évolué, qui peut utiliser qemu afin de virtualiser l’architecture matérielle du chroot. On peut donc compiler du arm sur une machine i386 ou amd64 sans avoir besoin de passer par la création d’un environnement de cross-compilation.

Avant d’utiliser ce pbuilderrc, il faut donc posséder qemu-debootstrap, compris dans le paquet “qemu-user-static”. Ce paquet est dispo dans le dépôt squeeze-backports, wheezy et sid pour debian et à partir de Natty pour Ubuntu.

Il est aussi fortement recommandé d’avoir lu le billet La machine ultime pour compiler ses paquets debian avant de l’utiliser, afin d’avoir toutes les dépendances nécessaires pour utiliser pbuilder avec une telle configuration.

Le pbuilderrc est disponible sur mon dépôt GIT “scriptomaniak”, disponible sur github.

Il est à placer dans le dossier /root/, sous le nom .pbuilderrc

N’hésitez pas à faire des remarques et à me proposer des patchs/pull requests si vous voulez l’améliorer.

Bonne lecture et merci :).