Leeeeeeeet the sun shiiiiiiiiiine

En fevrier dernier, je vous parlais d'Illumos, incubateur libre permettant à OpenIndiana de garder l'haleine fraiche et le teint pétillant.

Les choses ont pas mal évolué depuis, en particulier, je me suis un chouillat impliqué dans le projet visant à intégrer parfaitement pkgsrc à Illumos.

De discussions en reflexions, j'en suis venu à me demander s'il ne serait pas judicieux de monter un repository de binaires pkgsrc pour OpenIndiana/Illumos/Solaris puisque cette plateforme est finalement parfaitement supportée depuis des lustres mais qu'aucun repo digne de ce nom n'a été maintenu plus de 2 mois. (et puis evidemment, il faut bien un package manager pour gêrer tous ces binaires hin hin hin…) Ainsi, Mads Worsøe Duun, l'initiateur du projet pkgsrc pour Illumos, a demandé aux gentils administrateurs du projet OpenIndiana (ouais, faut suivre) de nous mettre à disposition une buildbox afin de proposer des packages à jour, et bien plus de logiciels que n'en proposent Blastwave ou les repos IPS/pkg d’OpenSolaris (ricane ricane).

Ce qui est réellement à notre disposition ici, c'est une Zone, or, dans la plupart des documentations sur ce sujet (pkgsrc et Solaris), la méthode préférée, c'est de justement créer une zone pour faire son bulk build, mais comme ne nous pouvons pas créer de zone dans une zone (YO DAWG), il faudra procéder autrement, et c'est la raison même de cet article.

Comme l'explique la documentation officielle, il serait parfaitement inconscient de réaliser son bulk build sur une arborescence opérationnelle, en effet, sur les 10000 packages disponibles, une quantité non négligeable d'entre eux vont ajouter des utilisateurs, des groupes, des repertoires, des logs, des modules, des librairies etc etc etc. Il vous faut une sandbox. Fort heureusement, la “création” d'une sandbox Solaris est d'une grande simplicité.

Je vous livre ici les differentes étapes que vous pourrez bien entendu concaténer dans un joli petit script.

On déclare tout d'abord la localisation du bac à sable sur le filesystem, puis on s'y rend :

Là, nous créons tous les répertoires nécessaires au bon fonctionnement du chroot, /tmp possède evidemment des droits particuliers :

On peuple un peu /etc de fichiers indispensables :

Enfin, point de copie de fichiers inutiles, nous mountons en loopback les repertoires /dev et /proc en lecture et écriture, puis bin sbin usr lib en lecture seule afin de ne pas faire de bêtises.

C'est prêt !

Afin de pouvoir correctement compiler l'ensemble des paquets de pkgsrc, vous aurez également besoin d'installer les logiciels suivants à l'aide de la commande pkg install : SUNWgcc, gnu-patch, gnu-tar, system/xopen/xcu4, gnu-grep, developer/object-file.

Enfin, voici les particularités de mon mk.conf, à ajouter aux directives du mk.conf chrooté grace au bootstrap et son drapeau --mk-fragment :

Ainsi que la commande complète de bootstrap :

Happy building.