Gnou

Le Blog de Thomas

Logiciels libres, informatique et autres ...

User Mode Linux et paquets Debian


Il y a quelques temps, j'avais parlé de http://user-mode-linux.sf.net sur ce blog. Je me suis remis dessus récemment, puisque je voulais tester un paquet Debian que nous avons créé avec David Mentré et Frédéric Lehobey sans l'installer sur mon système. En effet, comme c'est notre premier paquet Debian, il y avait des chances pour qu'il soit foireux.

J'ai donc commencé à reprendre UML. Je suis reparti du root_fs Debian Woody fourni sur le site de UML, que j'ai essayé d'upgrader en sarge, puisque c'est pour cette distribution que le paquet a été prévu. Or, pour une raison obscure, le dist-upgrade se foirait sur la mise à jour de la libc avec une étrange assertion incompréhensible. Bref, ça ne fonctionnait pas.

J'ai donc décidé de créer un root_fs pour Debian Sarge. Évidemment, je n'ai pas fait ça a la main, j'ai utilisé un outil formidable : rootstrap. Après moultes péripéties, j'ai réussi à obtenir un root_fs fonctionnel, que vous pouvez télécharger. J'en ai profité pour écrire un petit HOWTO sur comment ça se déroule : HowtoRootStrap. D'ailleurs, je viens de voir qu'il était déjà à la 4ème place dans Google pour la recherche rootstrap uml.

Résultat, j'ai pu tester le paquet Debian que nous avions créé. Pour information, ce paquet est librpc-ocaml-dev, c'est une bibliothèque de développement pour Objective Caml qui permet de faire des RPC. En fait le but est de packager le logiciel de l'Expérience Démocratique qui a besoin de cette bibliothèque. Le paquet pour Sarge, totalement expérimental, est disponible. Je l'ai testé dans UML, et il s'installe parfaitement dans une Sarge.

Ensuite, j'ai testé la compilation du logiciel de l'Expérience Démocratique dans UML avec ce paquet installé. La compilation s'effectue correctement, ce qui signifie que Objective Caml a bien trouvé la bibliothèque RPC. En revanche, le serveur de l'Expérience Démocratique se vautre lamentablement avec un Segmentation Fault lorsqu'on le lance. Je n'ai pas encore déterminé si c'était lié à UML ou non. D'une manière ou d'une autre, c'est sûrement le cas, parce que sur ma machine, il fonctionne parfaitement.

Tout cela m'a également fait découvrir la façon dont on créé un paquet Debian. Brièvement, je vais citer quelques outils utilisés pour donner quelques pistes aux éventuels lecteurs. Tout d'abord, l'outil dh_make (paquet Debian dh-make) permet de créer dans les sources originales le répertoire debian avec les fichiers par défaut, ansi que les fichiers .orig.tar.gz et .dsc. A partir de là, il faut modifier debian/control pour y mettre la description et les dépendances du paquet, puis debian/rules pour indiquer comment le paquet se compile et s'installe. Dans notre cas, c'était à la fois simple puisque nous avions des exemples, mais pas évident, puisque la compilation de la bibliothèque Objective Caml n'utilise pas le simple triplet ./configure && make && make install. Il a donc fallu un peu bricoler, s'inspirer d'autres debian/rules pour obtenir quelque chose de satisfaisant et fonctionnel. Une fois ceci terminé, on peut construire le paquet en utilisant dpkg-buildpackage. Toutefois, il existe un paquet encore plus fort : pbuilder. En utilisant la commande pbuilder create vous allez créer un tarball contenant un système Debian minimal. Puis en utilisant pbuilder build paquet vous allez lancer la construction de votre paquet au sein du sous-système pbuilder (en fait c'est une Debian chrooté). Ceci permet de vérifier que les dépendances de compilation du paquet (Build-Depends) sont correctes, et que celui-ci se compile bien dans un environnement sain. C'est assez fort comme outil.

Ensuite, pour tester, soit vous utilisez directement votre machine, soit vous utilisez un sous-système UML !
Il y a un commentaire sur cette page. [Afficher commentaires/formulaire]