Accueil

Paquet parfait grâce à Qemu

Sommaire

Introduction

Il est entendu ici par paquet parfait :

Pour arriver à distribuer ce genre de paquet, il faut les fabriquer dans un environement parfait, entièrement sain, mais complet de Slackware. Autant dire, personne n'a ce genre de Slackware chez lui :-). Et c'est bien le but de cet article ! Créer un environnement de travail dans une machine virtuelle afin de créer des paquets distribuables, ou simplement afin de tester ses Slackbuilds.

Prérequis

Installation de Slackware

La machine

J'ai choisit d'utiliser l'interface graphique Qemulator pour gérer mes différentes machines. Cependant, si vous préférez faire votre geek et utiliser qemu en cli, pas de soucis, voilà la marche à suivre :

création d'un disque virtuel

5Go me semble être un bon compromis, sachant qu'une Slackware complète occupe 3.2Go, en gardant un peu de place pour les sources des logiciels, ça doit suffir.

   qemu-img create -f qcow2 disque_full_vanilla 5G

Courte explication :

création du reste de la machine

Notre machine va être dotée de 256Mo de ram pour la machine virtuelle (quand on a 1Go de ram, même avec compiz-fusion sur xfce, xchat, firefox-3beta2, claws-mail, liferea, Gajim, lancés sur l'hôte, tout marche à merveille).

Pour allouer la mémoire virtuelle (si vous utiliser kqemu, et amha il faut)

  mount -o size=272 -t tmpfs none /dev/shm

Qemu préfère que l'horloge système soit optimiser, donc il peut vous demander de renseigner un fichier comme suit

  echo 1024 > /proc/sys/dev/rtc/max-user-freq

Et enfin on peut lancer la machine. Si kqemu est installé, la virtualisation complète marchera sans soucis, on utilise donc la commande :

  qemu -M pc -m 256 -kernel-kqemu -hda /rep/vers/disque_full_vanilla -cdrom /rep/vers/slackware-dvd.iso -net nic,vlan=0 -net user,vlan=0,hostname=slackemu  -boot d

Quelques explications :

L'installation

La machine démarre sur le dvd de Slackware-12.0, l'installation commence alors.

On lance cfdisk pour partionner : /swap et /. /home ici n'a pas grand intérêt, l'idée étant de toujours revenir, quelques modifs ayant été faites, à un environnement pur.

On lance setup, puis dans l'ordre (de mémoire, on suppose que vous savez installer une slack) :

À ce stade, une slackware vanilla est installé sur la machine virtuelle.

Préparation de l'environnement de construction des paquets

Configuration de base

Il est intéressant quand on compile beaucoup d'utiliser ccache. Pour ce faire, rien de plus simple :

  cd /usr/local/bin
  ln -s /usr/bin/ccache cc
  ln -s /usr/bin/ccache gcc
  ln -s /usr/bin/ccache g++

Il faut ensuite créer un environement de travail non-root, on utilisera donc adduser (ou useradd si vous aimez vous masturber le neurone).

Peut-être enfin (personnellement je ne le fais pas) on peut franciser notre installation. Je déconseille cependant le passage en utf-8 pour diverses raisons (mysql pose parfois soucis, les doc -man,info- sont en iso, et surtout, une Slackware vanilla n'est pas en utf-8 !)

Nous voilà prêt pour créer des paquets ou simplement tester nos SlackBuilds sur un environnement idéal : une Slackware vanilla (non je ne me répète pas, ça porte un nom : bourrage de crâne, et ça marche ;-))

Mises à jour

Et bien oui, une Slackware vanilla c'est bien, mais faut la maintenir à jour. Et pour ce faire, on va utiliser les paquets contenu dans le répertoire /patches des dépôts officiels. Et pour y accéder, on peut utiliser plusieur méthodes : faire un iso, et mounter l'iso via l'option -cdrom /rep/vers/slackware-dvd.iso, ce qui me paraît un peu gros, ou plus simple, c'est la solution que j'ai adopté, utiliser le réseau.

Pour des raisons pratiques on peut réunir toutes les majs dans un archives qu'on récupère ainsi en une seule fois.

  scp 192.168.1.2:/home/moi/l.archive.qui.va.bien.tar
  tar xf l.archive.qui.va.bien.tar
  upgradepkg *tgz

Et pas plus, nous voilà munie d'une Slackware-12.0, complète, vanilla et à jour ! Certains diront qu'il manque extra/ ou testing/, on verra au fur et à mesure si on a besoin des paquets. La procédure est la même.

Snapshot

FIXME À finir Il va sans dire qu'à chaque paquet installé sur cette machine, elle ne sera plus vanilla, et donc les binaires compilés dessus risqueraient d'intégrer des fonctions non supportées par toutes les Slackware. Il faut donc, après avoir installé un nouveau paquet et ses dépendances tout désinstaller pour revenir à l'état vanilla. Dans le cas de la construction d'un gnome, c'est pas moins de 50 paquets à installer puis supprimer !

Pour faire plus simple, qemu et plus particulièrement son format d'image qcow2 nous permet de faire des *snapshots*, c'est à dire de capturer l'état de la machine à un moment précis, nous permettant ainsi de le restaurer plus tard.

Maintenant on peut créer un paquet et ses dépendances, transférer via scp ou tftp les paquets et autres SlackBuilds sur notre hôte, et redémarrer sur le snapshot d'origine via la commande ...

Thèmes : #articles #avance #logiciels #pkgtool #sbn

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.