[article paru dans LinuxMagazin 42]
Gentoo :pengouin rapide
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.
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...
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.
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-admin
(« emerge
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.
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.
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.
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