1. Introduction

J'utilise Gentoo depuis plusieurs années maintenant sur mon poste principal. J'ai auparavant testé Ubuntu, puis Debian (que j'utilise encore sur le poste de mes enfants et sur mon poste à tout faire (DNS, SQUID, APACHE...)).

Ce qui m'a attiré chez Gentoo c'est la possibilité de customisation plus poussée que dans les distributions binaires. En effet, cela m'agaçait de voir un nombre important de programmes installés alors que la majorité n'étaient pas utilisés. Et avoir une machine qui est opérationnelle en moins d'une minute avec un kernel ne contenant que ce dont j'ai besoin me plaisait.

Avant de se lancer dans l'installation d'une Gentoo, il faut bien comprendre que cette distribution est une distribution source en rolling-release. Cela signifie que tout est compilé pour votre machine en fonction des choix effectués dans les fichiers de configuration de la distribution (make.conf, package.mask, package.keyword, package.unmask...) au travers des USE Flags; et que la maintenance/optimisation est plutôt chronophage, au début tout au moins.

Ce texte n'a pas vocation à se substituer à la documentation officielle mais plus à faire un tour d'horizon avec quelques remarques ou informations personnelles venant parfois compléter celle-ci.

2. Historique

Daniel Robbins est le fondateur de Enoch Linux en 1999 qui sera renommée Gentoo en 2002. Il restera leader du projet jusqu'en 2005, époque à laquelle il quitte le projet, non sans avoir auparavant créé la Fondation Gentoo afin d'en assurer la protection légale.

3. Installation

L'installation recommandée sur les forums consiste à partir d'un stage 3 (archive contenant un environnement minimal) , à partir d'un chroot effectué avec un RescueCD.

L'installation à partir d'un stage3 s'effectue en deux temps. Tout d'abord l'installation d'un système minimal, puis l'installation de l'environnement graphique et des divers logiciels dont vous aurez besoin.

Il est important de disposer de suffisamment de temps pour compléter l'installation car la compilation est assez longue. Cette longueur est variable en fonction de votre processeur (la compilation sur un quad-core sera plus rapide que sur un bicœur, par exemple).

3-A. Partitionnement et formatage des disques

Avant de se lancer dans cette opération il est primordial de s'assurer de disposer d'un espace suffisamment grand et libre sur le disque de destination. L'utilitaire graphique Gparted étant fourni avec le RescueCD autant s'en servir. Une partition / (racine) de 30 à 50 Go apparaît comme étant convenable.

3-B. Décompresser le stage 3 et l'instantané de portage

Après avoir préparé les disques (partitionnement et formatage), il faudra décompresser le stage 3 ainsi qu'un instantané de Portage. Une fois ceci fait, il vous faudra synchroniser le portage (en ayant pris soin de choisir vos miroirs) avec la commande emerge -sync.

3-C. Sélection d'un profil

La commande eselect vous permettra de choisir le profil que vous voulez utiliser.

Un profil comme vous pouvez le voir ci-dessous, vous permettra d'avoir un certain nombre de USE Flags définis par défaut. Ainsi si vous souhaitez un bureau graphique KDE un simple eselect profil set 4 sélectionnera pour vous (enfin les développeurs Gentoo) un certain nombre de paramètres afin que KDE fonctionne au mieux sur votre configuration.

#eselect profile list
Sélectionnez
Available profile symlink targets: 
    [1]    default/linux/amd64/10.0 
    [2]    default/linux/amd64/10.0/desktop 
    [3]    default/linux/amd64/10.0/desktop/gnome * 
    [4]    default/linux/amd64/10.0/desktop/kde 
    [5]    default/linux/amd64/10.0/developer 
    [6]    default/linux/amd64/10.0/no-multilib 
    [7]    default/linux/amd64/10.0/server 
    [8]    hardened/linux/amd64 
    [9]    hardened/linux/amd64/selinux 
    [10]    hardened/linux/amd64/no-multilib 
    [11]    hardened/linux/amd64/no-multilib/selinux 
    [12]    selinux/2007.0/amd64 
    [13]    selinux/2007.0/amd64/hardened 
    [14]    selinux/v2refpolicy/amd64 
    [15]    selinux/v2refpolicy/amd64/desktop 
    [16]    selinux/v2refpolicy/amd64/developer 
    [17]    selinux/v2refpolicy/amd64/hardened 
    [18]    selinux/v2refpolicy/amd64/server

3-D. Configuration de la variable USE

Cette étape quoiqu'importante est une manipulation que vous ferez régulièrement afin d'optimiser votre système.

Elle consiste à éditer le fichier /etc/make.conf (en étant root) et sélectionner les USE flags que vous voulez utiliser.

Attention, il convient de remplacer la configuration donnée dans la documentation  par celle-ci, dans

/etc/make.conf
Sélectionnez
CFLAGS="-march=native -O2 -pipe"

ainsi le compilateur GCC détectera tout seul votre processeur. Vous pouvez aussi modifier ou ajouter les lignes suivantes :

/etc/make.conf
Sélectionnez
MAKEOPTS="-j5 -l5"

MAKEOPTS indique à GCC combien, au maximum, il peut exécuter simultanément via l'option -j. L'option -l est une protection supplémentaire (incluse à partir de portage 2,2) qu'il est prudent d'indiquer.

/etc/make.conf
Sélectionnez
EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=5.0 --with-bdeps y"

Cet ajout a pour but de fixer la charge CPU maximale (load average) et le nombre de packages compilés en parallèle (jobs). Il est conseillé de fixer le nombre de « jobs » selon la formule suivante : Nombre de cœurs physiques + 1. L'option « --with-bdeps y » permet de gérer les dépendances lors de l'installation et de l'usage de la commande emerge -depclean.

Voici comment se présente la variable USE a minima pour un bureau KDE :

/etc/make.conf
Sélectionnez
USE="-gtk -gnome qt3 qt4 kde dvd alsa cdr"

Et voici ce à quoi elle ressemble pour un bureau gnome après un long moment d'optimisation :

/etc/make.conf
Sélectionnez
USE="64bit a52 aac aalib acpi additions alsa archive audio audiofile automount \
    bash-completion -bluetooth brasero bzip2 cdda cddax cdio cdr cdrkit \
    cdrom cdrtools consolekit cpudetection css dbus device-mapper dga dmx \
    dri dvd dvdr edit embedded-fuseiso encode esd exif extras fam fat fbcon \
    ffmpeg fuse gcdmaster gdu gif gnome gnome-keyring gnomecd gnutls gtk \
    graphviz hddtemp hpcups hpijs icoutils imagemagick iostats introspection \
    iptc java java6 jpeg jpeg2k libcaca lm_sensors lzma lzo matroska mbox \
    mp2  mp3 mp4 mpeg new-hpcups nfsv3 nfsv4 nls ntfs nvidia ogg ogg123 ogm \
    opengl openexr pcre png policykit posix ppds print pulseaudio raw rss \
    samba sensord sqlite templates smp startup-notification svg symlink \
    theora tiff toolbar tools truetype unicode usb userlocales v4l v4l2 \
    vboxwebsrv vcd vda vde video virtualbox vorbis wma-fixed wmf x264 \
    xcomposite xpm xvid xinerama zeroconf zlib -directfb -kde -ipv6 \
    -qt3support -qt4 -hal" 

Configuration du noyau

Après avoir réglé les locales (à moins que vous ne préfériez un système en langue anglaise) et configuré le fuseau horaire, il est temps de passer à la configuration du noyau.

Pour la configuration du noyau, vous avez la possibilité de récupérer un seed (fichier .config) afin de limiter le travail de configuration. Ce fichier est à copier dans le répertoire /usr/src/linux (avec l'utilisateur root).

Pour installer les sources du noyau il suffit de lancer la commande emerge gentoo-sources. Ce qui installera les sources les plus récentes à disposition.

Pour lancer la configuration des sources du noyau, il suffit de lancer la commande make menuconfig (c'est sûrement l'utilitaire le plus connu) ou bien make nconfig (utilitaire plus récent qui se pilote via les touches de fonction).

Les sections importantes à regarder sont (cela n'empêche pas de regarder les autres bien sûr) :

 
Sélectionnez
Processor type and features
File systems
Device Drivers

Une fois le noyau configuré et sauvegardé, on peut enfin passer à la compilation.

À propos de la configuration du noyau. Il y a deux options qui, à mon avis, sont à activer dans « General setup » :

 
Sélectionnez
Kernel .config support
Enable access to .config through /proc/config.gz

Pourquoi ?

Car grâce à ces options, le noyau exporte sa configuration dans /proc/config.gz. Et s'il arrivait que vous perdiez (ou effaciez) par mégarde le fichier .config situé dans /usr/src/linux vous pourriez le récupérer avec cette option.

Pour la compilation du noyau il convient de faire un « make mrproper » avant de lancer le « make && make modules_install » final afin de nettoyer les sources et éviter des soucis difficiles à identifier.

Une fois la compilation terminée « cp arch/x86_64/boot/bzImage /boot/<le nom que vous voulez donner à votre kernel> ». L'exemple ici est donné pour une architecture 64 bits. Pour une architecture 32 bits il suffit de remplacer x86_64 par x86.

3-E. Configuration réseau et système

Il faut bien sûr mettre à jour le fichier /etc/fstab afin d'avoir un système fonctionnel.

Il est à noter que chez Gentoo les principaux fichiers de configuration du système se trouvent dans /etc/conf.d.

C'est à cet endroit que vous trouverez les fichiers « hostname » (nom de votre machine), « net » (interface réseaux, route et dns) et « keymaps » (configuration clavier).

Voici un exemple du fichier :

/etc/conf.d/net
Sélectionnez
config_eth0="192.168.0.100 netmask 255.255.255.0 brd 192.168.0.255" 
routes_eth0="default via 192.168.0.1" 
dns_servers="192.168.0.10 208.67.222.222 212.27.53.252" 

À la suite du basculement de Gentoo vers baselayout 2 et Openrc plusieurs fichiers de configuration ont soit changé d'emplacement soit changé de format (l'exemple pour le fichier net ci-dessus illustre ce changement) voire parfois changé de nom (/etc/conf.d/clock devenu /etc/conf.d/hwclock).

Il est tout à fait possible d'utiliser le Guide d'installation Fr de Gentoo en prenant soin d'apporter au fur et à mesure les modifications indiquées dans le Guide de migration vers baselayout 2 et Openrc.

L'avantage de ce basculement est d'une part la possibilité de lancer en parallèle les services lors du boot et aussi qu'il gère les dépendances. Ainsi, si tel service a besoin que le réseau soit actif pour pouvoir être à son tour lancé, si ce n'est pas le cas, ce service ne sera pas lancé. Ce qui accessoirement peut permettre de plus facilement localiser la source d'un problème lors du démarrage.

Une fois cette partie terminée vous disposerez d'un environnement fonctionnel mais en mode console.

Il ne vous restera plus qu'à installer un environnement graphique (selon vos goûts) et vos logiciels préférés.

Le manuel d'installation complet de Gentoo vous apportera plus d'informations concernant les divers réglages à effectuer afin d'avoir un système fonctionnel.

3-E-1. Les Runlevels

Dans Gentoo, contrairement aux distributions classiques qui utilisent des runlevels numérotés (/etc/rc<niveau d'exécution>), les runlevels sont nommés (boot, default, nonetwork et single pour l'utilisateur en plus de sysinit, shutdown et reboot réservés au système).

Ainsi le répertoire /etc/runlevels contient un répertoire « boot » contenant lui-même des liens vers /etc/init.d qui correspondent à tous les services qui doivent être lancés au moment du boot. Ces scripts d'initialisation sont appelés dans l'ordre alphabétique.

Toutefois, ceux-ci peuvent contenir une directive « depend » qui liste les dépendances impératives (need) ou d'utilisation (use) ainsi que le service fourni (provide).

Cela permet par exemple de lancer la connexion réseau avant un service qui l'utilise ou en a besoin. Cette directive a donc pour effet de modifier l'ordre dans lequel sont lancés les services.

Cet exemple illustre la directive depend pour un mta (postfix, exim...) :

Cet exemple illustre la directive depend pour un mta (postfix, exim...)
Sélectionnez
depend() {
    need net
    use logger dns
    provide mta
}

On comprend facilement que :

  • on a besoin (need) d'une connexion réseau (filaire, wifi ou autre) ;
  • on utilise (use) une journalisation (syslog, syslog-ng...) et un dns (bind...) ;
  • on sert (provide) le service mta (exim, postfix...).

L'affectation d'un service à un runlevel s'effectue avec la commande rc-update.

L'exemple suivant affecte le service net.eth0 au runlevel nommé default.
Sélectionnez
rc-update add net.eth0 default
Pour supprimer l'affectation précédente il suffit de lancer la commande suivante :
Sélectionnez
rc-update del net.eth0 default

Cette commande permet facilement de lister les services affectés à un runlevel :

rc-update show
Sélectionnez
apache2        |        default
bootmisc       |    boot
checkfs        |    boot
checkroot      |    boot
clock          |    boot
consolefont    |    boot
hostname       |    boot
keymaps        |    boot
local          |    default    nonetwork
localmount     |    boot
metalog        |    default
modules        |    boot
mysql          |    default
net.eth0       |    default
net.lo         |    boot
netmount       |    default
rmnologin      |    boot
samba          |    default
serial         |    boot
sshd           |    default
urandom        |    boot
vixie-cron     |    default

On voit dans cet exemple que checkfs, qui lance la vérification des disques, est lancé au boot du système (et c'est à ce moment que vous pleurez lorsqu'il vérifie votre disque de 2 To plein à craquer de vidéos et images interdites au moins de 18 ans).

Le grand avantage de ces runlevels nommés est que si l'on est amené à exécuter soi-même la commande pour lancer un service (on utilisera très souvent le runlevel default) cela est très compréhensible et réduit donc le risque de commettre une erreur de runlevel pour le néophyte (qui parle de moi ?).

4. Prise en main

Nous nous attarderons ici sur Emerge, les USE Flags ainsi que sur un certain nombre d'outils qui me semblent être très utiles dans une utilisation quotidienne.

4-A. La Configuration

4-A-1. Les USE Flags

Les USE Flags sont ce qui fait la particularité de Gentoo. Ils permettent de customiser le système. Ce sont des options de configuration de la commande configure qui se trouvent dans les fichiers /etc/make.conf (pour les options globales) et /etc/portage/package.use (pour les options spécifiques à un paquet).

Si l'on prend l'exemple de Firefox la commande emerge -pv (voir ci-après pour plus d'explications) nous donne :

 
Sélectionnez
[ebuild   R   ] www-client/firefox-3.6.17  
USE="alsa dbus gnome ipc java libnotify startup-notification -bindist
 -custom-optimization -debug -system-sqlite -wifi" LINGUAS="fr -af -ar
 -as -be -bg -bn -bn_BD -bn_IN -ca -cs -cy -da -de -el -en -en_GB
 -en_US -eo -es -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fy -fy_NL
 -ga -ga_IE -gl -gu -gu_IN -he -hi -hi_IN -hr -hu -id -is -it -ja -ka
 -kk -kn -ko -ku -lt -lv -mk -ml -mr -nb -nb_NO -nl -nn -nn_NO -oc -or
 -pa -pa_IN -pl -pt -pt_BR -pt_PT -rm -ro -ru -si -sk -sl -sq -sr -sv
 -sv_SE -ta -ta_LK -te -th -tr -uk -vi -zh_CN -zh_TW" 50,448 kB

On voit que la version de Firefox installée est la 3.6.17 et que les USE flags activés (en rouge) sont alsa dbus ipc java lib notify, startup-notification et la langue fr (français).

Firefox est donc compilé avec le support alsa, dbus, gnome, java...

Pour désactiver le support de Java, il suffit de supprimer Java du fichier /etc/make.conf et plus aucun programme ne supportera Java sur le système.

Si par contre on souhaite avoir le support Java exclusivement pour Firefox il suffit de rajouter cette ligne dans le fichier /etc/portage/package.use : www-client/firefox java.

C'est cette possibilité de finement choisir les options de compilation des divers programmes installés sur le système qui, à mon avis, fait la puissance et la souplesse de Gentoo.

4-A-2. Masquage/démasquage de paquet.

L'autre particularité de Gentoo est de pouvoir masquer (désactiver) ou démasquer (activer) une version particulière d'un paquet. Certains paquets sont masqués par les développeurs de Gentoo car considérés comme instables ou bogués.

L'exemple ci-dessous montre un paquet démasqué :
Sélectionnez
[I] app-editors/gedit-plugins 
    Available versions: (~)2.30.0 {bookmarks +bracketcompletion charmap colorpicker +drawspaces +joinlines python +session showtabbar smartspaces terminal} 
    Installed versions:  2.30.0(18:11:33 27/01/2011)(bookmarks bracketcompletion colorpicker drawspaces joinlines python session showtabbar -charmap -smartspaces -terminal) 
    Homepage:    http://live.gnome.org/GeditPlugins 
    Description:    Offical plugins for gedit. 

Trois fichiers sont utilisés pour cela : /etc/portage/package.mask, /etc/portage/package.unmask et /etc/portage/package.keyword.

Chacun de ces fichiers ne doit contenir qu'une ligne par paquet. Chaque ligne (sauf pour package.unmask) peut commencer par les signes >, = ou >=.

4-A-2-A. Package.mask

Ce fichier permet de masquer et bloquer l'installation des paquets qu'il contient dans une version déterminée afin de ne jamais l'installer, que ces paquets soient dans la branche stable ou non.

Exemple :
Sélectionnez
=sys-kernel/gentoo-sources-2.6.36-r5

Dans cet exemple le kernel 2.6.35-r5 ne sera pas installé. Mais le kernel 2.6.35-r6 pourra l'être sans aucune intervention de votre part.

4-A-2-B. Package.unmask

Ce fichier permet de démasquer un paquet dans une version déterminée afin de l'installer, que le paquet soit dans la branche stable ou non.

Exemple :

# plugin gedit
Sélectionnez
app-editors/gedit-plugins

Grâce à cette simple ligne les plugins pour gedit seront installés comme si ce paquet était d'office accessible.

4-A-2-C. Package.keywords

# plugin gedit
Sélectionnez
>=app-editors/gedit-plugins-2.26.3 ~amd64

Ici on demande l'installation des plugins pour gedit en version 2.26.3 ou supérieure bien qu'ils soient dans la branche instable (le ~ précédant l'architecture (ici amd64)).

Comme on peut le voir il suffit de démasquer (package.unmask) puis de spécifier la version à installer (package.keyword) et lors de la mise à jour le système gérera tout cela comme un grand.

4-B. Emerge

Emerge est l'outil qui va permettre l'installation et la désinstallation des programmes. Voici quelques exemples des commandes les plus courantes accompagnés de commentaires.

4-B-1. Emerge -sync

Synchronise l'arbre portage.

Cette commande est à lancer avant toute autre commande afin d'avoir les dernières mises à jour. Il est conseillé de ne pas faire plus d'une synchronisation par jour (l'abus pouvant être sanctionné par un blocage de l'adresse IP).

Vous pouvez effectuer la synchronisation de l'arbre Portage au rythme que vous voulez. Toutefois, il ne faut pas perdre de vue que tout étant compilé plus le temps entre deux synchronisations est long plus le temps de compilation sera long. Le nombre de mises à jour de paquet pouvant devenir rapidement important.

4-B-2. Emerge firefox

Permet d'installer Firefox sans confirmation.

4-B-3. Emerge -pv firefox

Permet d'avoir les informations relatives à l'installation (option v) sans effectuer celle-ci (option p). Il est prudent de toujours commencer avec cette option afin d'éviter tout souci par la suite. Voici ce que donne cette commande chez moi :

 
Sélectionnez
[ebuild   R   ] www-client/firefox-3.6.17  
USE="alsa dbus gnome ipc java libnotify startup-notification -bindist
 -custom-optimization -debug -system-sqlite -wifi" LINGUAS="fr -af -ar
 -as -be -bg -bn -bn_BD -bn_IN -ca -cs -cy -da -de -el -en -en_GB
 -en_US -eo -es -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fy -fy_NL
 -ga -ga_IE -gl -gu -gu_IN -he -hi -hi_IN -hr -hu -id -is -it -ja -ka
 -kk -kn -ko -ku -lt -lv -mk -ml -mr -nb -nb_NO -nl -nn -nn_NO -oc -or
 -pa -pa_IN -pl -pt -pt_BR -pt_PT -rm -ro -ru -si -sk -sl -sq -sr -sv
 -sv_SE -ta -ta_LK -te -th -tr -uk -vi -zh_CN -zh_TW" 50,448 kB

4-B-4. Emerge -C firefox

Cette commande supprime Firefox du système.

4-B-5. Emerge -uDaNv system

Cette commande permet de mettre à jour le système de base.

4-B-6. Emerge -uDaNv world

Ici, elle permet de mettre à jour les programmes installés.

  • Option u : mise à jour : permet de mettre à jour la version d'un paquet (passage de la version 1.2.3 à la version 1.2.4).
  • Option D : oblige Emerge à considérer l'intégralité des dépendances. Cela évite d'avoir des paquets cassés par exemple.
  • Option a : demander confirmation. Cela permet d'annuler la mise à jour si on le souhaite. Toujours pratique.
  • Option N : oblige Emerge à tenir compte des nouveaux USE Flags dans le choix des paquets à recompiler.
  • Option v : verbosité de la commande.

4-B-7. Emerge --depclean

Cette commande permet de nettoyer le système des paquets obsolètes.

4-C. Eix

Eix est un utilitaire qui a pour but de se simplifier la vie et dans certains cas de remplacer Emerge. Voici les options de cette commande que pour ma part j'utilise.

4-C-1. Eix-sync

Ici par exemple, il s'agit de synchroniser l'arbre Portage/Overlay et une fois cela fait d'afficher les différences entre le nouvel arbre et l'ancien. Pour les paquets qui seront mis à jour le numéro de version apparaîtra surligné.

4-C-2. Eix -s <motif>

Ici, cette commande permet de rechercher un paquet par son nom. Tous les paquets contenant le motif seront affichés.

4-C-3. Eix -S <motif>

Cette commande recherche un motif dans la description des paquets. Tous les paquets contenant le motif seront affichés.

4-D. Revdep-rebuild

Cette commande est très importante car elle va scanner les bibliothèques et binaires installés afin de vérifier qu'il n'y a pas de dépendances cassées. Si c'est le cas elle lancera la compilation des paquets nécessaires afin de corriger cet état de fait.

Il est conseillé de lancer cette commande régulièrement afin de s'assurer que le système est parfaitement opérationnel.

4-E. Equery

Cet utilitaire permet d'obtenir des informations sur l'intégrité, les dépendances d'un paquet, quel paquet utilise un USE Flags donné...

Voici un exemple qui liste les paquets utilisant le USE Flags dbus :

#equery hasuse dbus
Sélectionnez
* Searching for USE flag dbus ... 
[IP-] [  ] app-emulation/q4wine-0.120-r1:0 
[IP-] [  ] app-emulation/wine-1.3.15:0 
[IP-] [  ] app-office/openoffice-3.2.1-r1:0 
[IP-] [  ] app-text/evince-2.32.0-r2:0 
[IP-] [  ] dev-libs/libunique-1.1.6:1 
[IP-] [  ] dev-python/PyQt4-4.8.3:0 
[IP-] [  ] games-strategy/wesnoth-1.8.5:0 
[IP-] [  ] mail-client/thunderbird-3.1.10:0 
[IP-] [  ] media-gfx/eog-2.32.1:1 
[IP-] [  ] media-sound/pulseaudio-0.9.22:0 
[IP-] [  ] media-video/vlc-1.1.10:0 
[IP-] [  ] net-ftp/filezilla-3.3.4.1:0 
[IP-] [  ] net-libs/xulrunner-1.9.2.17:1.9 
[IP-] [  ] net-print/cups-1.3.11-r4:0 
[IP-] [  ] www-client/firefox-3.6.17:0 
[IP-] [  ] x11-libs/qt-gui-4.7.2:4 
[IP-] [  ] x11-plugins/enigmail-1.1.2-r2:0 

4-F. Elogv

Elogv est un utilitaire qui permet de lire les logs de compilation. Cela est utile car si une compilation ne parvient pas à son terme toutes les informations sont accessibles facilement. Même si la compilation arrive à son terme il permet d'avoir accès aux informations post- installation.

Voici un exemple de ce que elogv donne comme informations (ici pour les drivers propriétaires nvidia) :

 
Sélectionnez
INFO: setup
Package:    x11-drivers/nvidia-drivers-275.09.07
Repository: gentoo
Maintainer: cardoe@gentoo.org jer@gentoo.org,spock@gentoo.org
USE:    acpi amd64 elibc_glibc gtk kernel_linux multilib userland_GNU
FEATURES:   sandbox
Determining the location of the kernel source code
Found kernel source directory:
    /usr/src/linux
Found kernel object directory:
    /lib/modules/2.6.38-gentoo-r6/build
Found sources for kernel version:
    2.6.38-gentoo-r6
Checking for MTRR support &#8230;

INFO: prepare
Applying 256.35-unified-arch.patch &#8230;
Converting /kernel/Makefile.kbuild to use M= instead of SUBDIRS= &#8230;

INFO: compile
Preparing nvidia module

INFO: install
Installing nvidia module

INFO: preinst
Updating module dependencies for 2.6.38-gentoo-r6 ...    
Adding module to moduledb.

LOG: postinst
You must be in the video group to use the NVIDIA device
For more info, read the docs at
http://www.gentoo.org/doc/en/nvidia-guide.xml#doc_chap3_sect6

This ebuild installs a kernel module and X driver. Both must match explicitly in their version. This means, if you restart X, you must modprobe -r nvidia before starting it back up.
To use the NVIDIA GLX, run "eselect opengl set nvidia"

NVIDIA has requested that any bug reports submitted have the output of /usr/bin/nvidia-bug-report.sh included.
To work with compiz, you must enable the AddARGBGLXVisuals option.
If you are having resolution problems, try disabling DynamicTwinView. 

QA: other

QA Notice: Found an absolute symlink in a library directory:
    usr/lib64/libnvcuvid.so -> /usr/lib64/libnvcuvid.so.275.09.07
    It should be a relative symlink if in the same directory
    or a linker script if it crosses the /usr boundary.
QA Notice: Found an absolute symlink in a library directory:
    usr/lib64/libnvidia-cfg.so -> /usr/lib64/libnvidia-cfg.so.275.09.07
    It should be a relative symlink if in the same directory
    or a linker script if it crosses the /usr boundary.
QA Notice: Found an absolute symlink in a library directory:
    usr/lib64/libnvidia-ml.so -> /usr/lib64/libnvidia-ml.so.275.09.07
    It should be a relative symlink if in the same directory
    or a linker script if it crosses the /usr boundary.

4-G. portpeek

Pour moi c'est l'utilitaire à installer absolument. Il aide à maintenir à jour les fichiers de configuration : package.mask, package.keyword, package.unmask et package.use utilisés par la commande emerge. Un paquet précédemment démasqué qui devient stable n'a pas de raison de rester dans le fichier package.unmask (exemple des plugins pour gedit vu plus haut).

4-H. Module-rebuild

4-H-1. Module-rebuild populate

Cette commande permet, suite à la compilation d'un nouveau noyau, une mise à jour des drivers vidéo... de détecter quels modules doivent être recompilés.

4-H-2. Module-rebuild rebuild

Cette commande permet de lancer la compilation des modules détectés par la commande précédente.

Il est d'ailleurs à noter que cette commande ne permet pas la recompilation des drivers xf86-input-evdev, xf86-input-keyboard, xf86-input-mouse. Or, ils doivent être recompilés à chaque recompilation de Xorg.

Lancer la commande suivante permettra de lancer la recompilation de ces drivers :
Sélectionnez
qlist -IC xf86-input-{evdev,keybord,mouse} | xargs emerge -1

4-I. Tmpwatch

Cet utilitaire permet de supprimer automatiquement les fichiers temporaires et logs de compilations inutiles (paramétrage dans /etc/cron.daily). On ne peut donc que recommander son utilisation.

4-J. Dispatch-conf

Dispatch-conf est un utilitaire qui permet de voir, accepter, refuser ou fusionner les modifications apportées aux fichiers de configuration. Il est particulièrement prudent de le lancer après chaque mise à jour. Ainsi on s'assurera que les fichiers .conf sont bien à jour et qu'éventuellement une modification de l'un d'eux ne sera pas effectuée sans notre consentement.

5. Critique

Cette distribution est particulièrement adaptée pour qui souhaite finement customiser son système au travers tant des USE Flags que des fichiers de configuration. La possibilité de choisir « facilement » tant les options de compilation que les versions précises des programmes en fait une distribution parfaitement adaptée à un grand nombre d'architectures.

Toutefois, et c'est là son grand défaut à mon avis, Gentoo demande un investissement significatif en termes de temps. Que ce temps soit consacré à peaufiner ses réglages au travers des fichiers de configuration (package.mask, package.keyword, package.unmask et package.use), ou qu'il soit consacré à la résolution d'un problème suite à une mise à jour.

Par exemple lors du passage de la libpng-1.2 à la libpng-1.4 cela a causé quelques soucis. J'ai pour ma part été obligé de lancer un certain nombre de recompilations de façon manuelle avant que la commande revdep-rebuild accepte de fonctionner.

6. Conclusion

Voilà une très bonne distribution ayant un grand nombre de paquets à disposition qui permet d'avoir un système stable et ayant moins tendance à l'embonpoint que beaucoup d'autres.

Toutefois, il est préférable d'avoir une machine puissante et rapide si l'on ne veut pas que la moindre mise à jour dure une éternité. Rien n'interdit d'installer Gentoo sur une petite configuration. Mais il faut le faire en toute connaissance de cause. Personnellement, je conseillerais une distribution binaire telle que Debian dans ce cas. Cependant il est possible de compiler un système Gentoo pour une autre architecture que la sienne assez facilement.

7. Remerciements

Je tiens à remercier tous ceux qui m'ont apporté leur aide lors de la publication de cet article :

  • Gorgonite pour la partie rédaction
  • kdmbella, jacques_jean et ClaudeLELOUP pour la relecture orthographique.