[article paru dans LinuxMagazin 42]

Gentoo :pengouin rapide

gentoo-logo

La distribution Gentoo[1] semble gagner chaque jour en popularité. C'est une distribution à part dans le monde des distributions Linux : je vous propose une petite présentation.

Carte d'identité

Gentoo est née au début de l'année 2002, et se présente dans sa version 1.2 à l'heure où j'écris ces lignes (bien que la version 1.4 pointe son nez). Aujourd'hui Gentoo est disponible sur les architectures x86, PowerPC, Sparc et Sparc64. Celle que j'utilise en cet instant est une version 1.2, installée sur un portable équipé d'un processeur Athlon à 1Ghz, 256Mo de mémoire, et 20Go de disque dur. La carte vidéo est une S3 Savage, dont la mémoire est prise sur la mémoire centrale. Il s'agit donc d'une machine moyenne aujourd'hui, pas ridicule mais pas une « bête de course » non plus.

Gentoo fait partie de la famille des distributions dites « source-based ». C'est-à-dire que les logiciels ne sont pas fournis sous forme binaire pour être installés, comme c'est le cas pour la plupart des distributions plus connues comme Debian, Slackware, Mandrake, RedHat... Au contraire, les logiciels sont récupérés sous forme de code source, et compilés « sur place ». De ce point de vue, Gentoo se rapproche de Linux From Scratch (LFS) [2]. Mais à la différence de LFS, beaucoup de choses sont automatisées...

L'installation

Toutes les instructions nécessaires à l'installation sont disponibles sur le site de Gentoo[3], y compris en français[4]. Il est vivement recommandé de conserver une copie de ces instructions sous la main ! Je décris ici l'installation sur la machine sus-décrite.

L'installation se fait à partir d'une image ISO gravée sur un CD (encore que d'autres moyens soient disponibles, comme l'utilisation de disquettes - voyez le site de Gentoo pour plus de détails). Deux images sont proposées :

J'ai choisi la première méthode. Je ne la détaillerai pas ici, mais autant préciser immédiatement que cela représente plusieurs heures de compilation, simplement pour le système de base ! En effet, la glibc, le compilateur lui-même vont être recompilés.

Première caractéristique : tout est fait en mode texte, en ligne de commande. Point de menus, boîtes où entrer des options, ni listes déroulantes. La configuration du système de base se fait a la mano, les fichiers fondamentaux comme /etc/fstab étant remplis avec l'éditeur de textes nano.

L'installation présente trois points critiques. D'abord, comme les codes sources des éléments à compiler sont téléchargés depuis l'internet, il est indispensable de configurer le réseau pratiquement avant toute chose. Le CD démarre sur un noyau 2.4.18, équipé des derniers modules (y compris pour les interfaces PCMCIA). Encore une fois, cette configuraiton se fait à la main, avec les programmes ifconfig et route - difficile de trouver plus bas niveau. Partitionnement des disques et montage des partitions se font de la même façon, avant de passer dans un environnement « chrooté ».

Ensuite, la personnalisation du système se fait en éditant le fichier /etc/make.conf. C'est lui qui contient les différents paramètres optionnels pour les compilations futures, ainsi que les optimisations que vous voulez voir appliquées. Celles-ci sont spécifiées simplement sous la forme de paramètres passés au compilateur. Pour la version 1.2, le compilateur était gcc 2.95.3. Pour la version 1.4, ce sera sans doute gcc 3.1, ce qui devrait encore améliorer les performances.

Une variable importante dans ce fichier de configuration est la variable USE. Elle contient une liste d'options qui pourront être appliquées aux logiciels compilés par la suite.

Prenons l'exemple de la librairie Qt. Celle-ci est bien plus qu'une librairie graphique : elle contient entre autre un module pour l'accès aux bases de données. Avec certaines options lors de sa configuration, on peut ainsi obtenir un support pour Postgresql et/ou MySQL. Hé bien ! si on fait figurer les options "postgres mysql" dans cette variable USE, alors Qt (et d'autres dans le même cas) recevra les options nécessaires au support de Postgresql et MySQL. Si on inscrit par contre : "postgres -mysql", on aura le support pour Postgresql mais pas pour MySQL.

Les options par défaut conviennent sans doute dans la plupart des situations, mais si vous voulez arranger un peu les choses à votre goût, je vous invite à consulter le HOWTO consacré à cette variable USE [5], ainsi qu'à regarder le contenu du fichier /etc/make.profile/use.defaults.

Enfin, à un moment vous devrez compiler votre propre noyau. Certaines options doivent figurer dans ce noyau, en dur et non pas en modules - sinon votre système risque de ne pas démarrer. Par exemple, si vous utilisez des disques IDE, pensez à inclure le pilote IDE. Plus sérieusement, il est nécessaire d'activer l'option "Device File System" dans la section "Filesystems", ainsi que "Virtual Memory Filesystem" : ces deux éléments sont utilisés par le système de démarrage de Gentoo.

À l'issue de l'installation, vous avez un système assez minimaliste, mais qui a le bon goût de démarrer. À ce propos, le gestionnaire de démarrage retenu est Grub, mais il est sans doute possible d'utiliser LILO (je n'ai pas testé). Voyons maintenant comment installer ce qui manque.

Portage

Il s'agit du nom du système de paquetages de Gentoo, dont plus de 2300 sont disponibles à ce jour - et cela aura sans doute augmenté quand vous lirez ces lignes. Comme pour la plupart des distributions, les paquetages sont organisés en catégories. Mais là s'arrêtent les similitudes. Pas de fichiers .rpm ou .deb, mais des fichiers .ebuild... qui ne contiennent que du texte ! En fait, ces fichiers contiennent les instructions nécessaires à la compilation des différents logiciels. Vous trouverez l'arborescence des paquetages disponibles dans le répertoire /usr/portage. Placez-vous à cet endroit en tant que root, et exécutez :

# emerge rsync

emerge » est pour « ebuild - merge », fusionner un fichier ebuild)

Cette commande va télécharger la dernière arborescence disponible, c'est-à-dire les dernières informations en date concernant les dernières versions des derniers paquetages disponibles. Cette opération est à effectuer périodiquement, pour se tenir à jour. On peut rapprocher cette commande du « apt-get update » de Debian. Toutefois, il n'y a pas (pour l'instant) dans Gentoo de notion de branches « stable » ou « instable » : tout est considéré comme stable.

Cela étant fait, nous pouvons installer quelques petites choses. Commençons par KDE :

# emerge --pretend kde

Le résultat est une liste sans doute assez longue, des paquetages qui vont être installés, dans l'ordre. Oui, portage assure la gestion des dépendances : par cette simple commande, tout un ensemble de paquetages nécessaires au fonctionnement de KDE vont être installés - comme apt-get install ou urpmi. L'option --pretend passée à la commande emerge est justement la demande d'affichage de cette liste, sans lancer réellement l'installation. Prenons une ligne au hasard :

[ebuild N ] x11-base/xfree-4.2.0-r12 to /

Cela nous indique que dans la catégoriex11-base, le paquetage xfree-4.2.0 est nouveau (le N) et sera donc installé. Le -r12 signale qu'il s'agit de la douzième version de ce paquetage ('r' comme release).

Pour lancer effectivement l'installation, exécutez :

# emerge kde

...puis allez prendre un café, vous promener, lire un livre... Encore une fois, nous sommes parti pour quelques heures de compilation. Ou bien, dans une autre console virtuelle, consultez la page man de emerge.

Quelques petites recommandations. Si vous tenez à rester en ligne de commande, installez le paquetage gentoolkit dans la catégorie app-adminemerge app-admin/gentoolkit ») : il contient quelques petits outils pratique pour manipuler les paquetages Gentoo. Si vous préférez les interfaces graphiques, il existe KPortageMaster (dans app-admin), le frontal au système portage le plus abouti que j'ai testé (d'autres sont disponibles, comme portagemaster écrit en Java). Par ailleurs, méfiez-vous des monstres comme OpenOffice : celui-ci m'a pris plus de douze heures de compilation, remplissant plus d'un giga-octet d'espace disque.

pictures/picture2.png

Enfin, pour l'installation d'un paquetage, Gentoo télécharge le code source dans le répertoire /usr/portage/distfiles, la compilation étant effectuée dans /var/tmp/portage. De temps à autre, il n'est pas inutile de purger ces deux répertoires (avec un simple « rm -R ») pour économiser un peu de place.

Mis à part le temps d'installation d'un paquetage et l'espace disque que cela nécessite, l'utilisation du système portage est un vrai bonheur (enfin c'est mon avis). Il est même possible de mettre à jour l'intégralité de son système, avec les simples commandes « emerge --update system » pour le système de base, et « emerge --update world » pour tout le reste.

Fichiers de démarrage

Les distributions habituelles nous ont habitués au mécanisme dit « System V » pour les fichiers de démarrage. En gros, des scripts de configuration ou lancement de serveurs sont placés dans un sous-répertoire de/etc, et certains sont exécutés selon l'entrée ou la sortie d'un certain runlevel. Ces runlevels étant en nombre limité, disons 6 pour simplifier, quatre seulement étant réellement disponibles. Et les scripts de configuration sont exécutés dans un ordre dépendant de leur nom, ce qui résulte en des fichier au nom tel que S20xfs ou S57squid.

Gentoo propose une approche différente. Les runlevels ne sont plus numérotés, mais nommés. L'utilisateur est libre du nom des runlevels (à l'exception de celui nommé "boot", qui ne doit pas être renommé ni supprimé), ce qui donne un meilleur confort dans leur manipulation, et permet d'en définir un nombre aussi élevé que l'on veut (enfin, presque).

Par ailleurs les scripts de configuration contiennent des informations de dépendances, tout comme les paquetages. Tel script pourra indiquer « je fourni le service S », tel autre « j'ai besoin du service S ». Lors du démarrage, ces deux scripts seront démarrés dans le bon ordre.

Par ailleurs, chacun des scripts de démarrage accept les commandes habituelles « start », « stop » et « restart ». Encore une fois, les dépendances sont assurés, même lors d'un arrêt ou démarrage manuel d'un script. Enfin, le petit utilitaire rc-update permet d'ajouter ou de retirer très facilement un script de démarrage d'un runlevel.

Je ne rentrerai pas plus dans les détails ici, la gestion des scripts de démarrage sous Gentoo nécessiterait un article complet. Pour plus d'informations, consultez la documentation[6] concernant ce mécanisme original.

Conclusion

Bien qu'encore assez jeune, la distribution Gentoo présente beaucoup d'intérêt et de facilités pour l'utilisateur. Toutefois, sa nature même impose, non seulement de disposer d'une connexion haut débit à l'internet (type ADSL), mais aussi d'avoir une certaine familiarité avec le système Linux. Elle n'est donc pas à mettre entre les mains d'un débutant, ou alors il faut que celui-ci soit bien motivé, et ne craigne pas la ligne de commande. Par ailleurs, la compilation de tous les éléments est une opération lourde, qui nécessite beaucoup d'espace disque et beaucoup de puissance. Gentoo peut parfaitement s'accomoder d'un bon vieux 486 avec 16Mo de RAM, mais l'installation a toutes les chances de s'étaler sur plusieurs jours. Notez qu'il est malgré tout possible de produire et diffuser des paquetages binaires, ce qui peut faciliter l'installation sur de vieux matériels.

Gentoo possède un système de paquetages sophistiqué, qui n'a pas grand-chose à envier aux systèmes type Debian ou RPM. J'y ai trouvé de ce point de vue un confort remarquable. Mais le principal intérêt de cette distribution, du moins pour ceux que cela préoccupe, réside dans l'obtention d'un système très optimisé, adapté au mieux pour son matériel. Utilisant auparavant une distribution Debian, l'amélioration des performances est légère mais incontestable, aussi bien pour un travail bureautique que pour un travail de développement (en C++). Seul petit regret, le fameux problème des menus des différents gestionnaires de fenêtres n'est pas résolu : OpenOffice ou GnuCash n'apparaîssent pas dans les menus de KDE ou WindowMaker, par exemple. Cela devrait venir avec le temps, d'autres distributions comme Debian gèrent fort bien le problème, en proposant un menu unifié (en apparence) pour tous les gestionnaires de fenêtres.

Alors, Gentoo, distribution de l'avenir ? Pour ses performances, sa souplesse et sa stabilité, elle devrait plaire aux utilisateurs un peu expérimentés ayant de fortes exigences envers le système - par exemple, pour faire un serveur ou un poste de développement. S'il s'agit de « seulement » taper du texte et surfer sur Internet, l'énorme travail d'installation et de configuration ne se justifie peut-être pas. Mon conseil : essayez-la !

Références

  1. Gentoo Linux : http://www.gentoo.org
  2. Linux From Scratch : http://www.linuxfromscratch.org
  3. Installation de Gentoo : http://www.gentoo.org/doc/build.html
  4. Installation en français : http://www.gentoo.org/doc/build-fr.html
  5. La variable USE : http://www.gentoo.org/doc/use-howto.html
  6. Les scripts de démarrage : http://www.gentoo.org/doc/rc-scripts.html
  7. Nouvelles en français de Gentoo : http://www.gentoofr.org/