13. Paquetages

13.1. Qu'est-ce qu'un paquetage?

Ajouter un programme sur la disquette, dans son état actuel, doit se faire en décompressant le ram-disque, en le montant en loopback avec les droits root, en plaçant le programme au bon endroit, en démontant le ram-disque, en compressant le ram-disque (n'oubliez pas que toute modification du ram-disque diminue le taux de compression de celui-ci) et en le mettant sur la disquette. C'est assez compliqué. Il vaut donc mieux utiliser des paquetages, c'est-à-dire des tarballs (fichiers .tar.gz) qui se trouvent sur la disquette, à côté du ram-disque et non pas dedans, et qui sont installés au vol par linuxrc ou ghlmf.ini.

13.2. Création d'un paquetage

Pour un exemple de paquetage, j'ai choisi le programme pcd qui est un simple lecteur de CD en ligne de commande, et je vais vous montrer du début à la fin comment l'installer.

Récupérez les sources (http://hocwp.free.fr/pcd.html). Décompressez-les. La compilation se fait comme avec busybox mais il faut juste pense que l'on va compiler le programme pour qu'il soit dans /bin mais qu'il s'installe dans /ghlmf/bin:

./configure --prefix=/
make CC=/ghlmf/usr/bin/i386-uclibc-gcc
strip pcd
/ghlmf/bin/ldd pcd
make -n install prefix=/ghlmf
su -
make install prefix=/ghlmf

Notez que j'ai testé que le binaire pcd créé était bien lié à µClibc, et que j'ai fait une simulation d'installation avec le make -n pour vérifier que le programme s'installait bien comme je voulais. Vu que ce projet ne contient qu'un seul binaire, j'aurais pu faire plus simple en ne copiant que le binaire au bon endroit, et à la main. Mais vous avez ainsi la méthode complète pour des projets un peu plus gros. N'oubliez pas de faire un strip <binaire> sur tous les binaires: vous gagnerez beaucoup de place ainsi. Le gain est de 75% avec pcd!

Revenons à notre paquetage, que nous allons appeler pcd.tar.gz. Allez dans /ghlmf et essayez ceci:

tar cvzf /tmp/pcd.tar.gz bin/pcd

Vous créez ainsi un tarball dans /tmp qui doit contenir tous les fichiers du paquetage, de telle manière que si vous décompressez ce tarball à la racine, les fichiers s'installent au bon endroit. C'est cela, un paquetage: un tarball contenant tous les fichiers nécessaires à une application, prêts à être installés au bon endroit lorsque le ram-disque sera en place.

Au fait, si vous voulez utiliser pcd, pensez à créer le périphérique correspondant au lecteur CD avec mknod!

13.3. La gestion des paquetages

Loin de moi l'idée de vouloir faire de la concurrence au format .deb ou au format .rpm. Le principe est d'avoir une manière simple d'ajouter des paquetages à la disquette avec un minimum de modifications.

Le principe est d'avoir sur la disquette un répertoire ne contenant que des paquetages, portant par exemple le nom joli et bien approprié packages. Ce répertoire sera accessible après via /mnt/fd0/packages. Pour installer tous les paquetages de la disquette, un petit script comme le suivant suffit:

cd /
packages=`ls /mnt/fd0/packages`
for p in $packages;
do
 tar xzf $p
done

Avec un tel bout de script que vous pouvez ajouter dans linuxrc, tout paquetage disposé dans le répertoire packages de la disquette sera installé lors du boot de la disquette. Simple, n'est-il pas?

Pour aller plus loin, nous pourrions même prévoir une procédure d'initialisation de certaines applications ou de lancement de programmes résidents contenus dans les paquetages. Une idée serait d'avoir un/des script(s) dans etc/init dans chaque paquetage. Après l'installation du paquetage, il suffirait donc d'exécuter tous les scripts de /etc/init avec ceci par exemple:

cd /
scripts=`ls -t /etc/init`
for s in $scripts;
do
 chmod 755 $s;
 $s
done

Notez l'option -t pour le ls, qui trie les scripts par ordre alphabétique, ce qui permet de donner une priorité d'exécution des scripts sans se casser la tête.

création est mise à disposition sous un contrat Creative Commons