Le manuel Gentoo Linux/x86 2006.0
Table des matières :
-
Installer Gentoo
Cette partie explique comment installer Gentoo sur votre machine.
-
À propos de l'installation de Gentoo
Les utilisateurs qui découvrent Gentoo doivent savoir que Gentoo est avant tout
une question de choix. (Chapitre en anglais.)
-
Démarrer le CD d'installation
Ce chapitre décrit comment démarrer l'installation à partir du LiveCD Gentoo.
-
Installer via l'interface basée sur GTK+
Ce chapitre résume l'installation et la configuration de Gentoo via l'interface
basée sur GTK+.
-
Installer via l'interface en mode texte
Ce chapitre résume l'installation et la configuration de Gentoo via l'interface
en mode texte.
-
Et que faire ensuite ?
Votre système Gentoo est maintenant installé. Que faire ensuite ?
-
Utiliser Gentoo
Apprenez maintenant à utiliser Gentoo : comment installer un logiciel,
modifier des variables, changer le comportement de Portage, etc.
-
Introduction à Portage
Portage sert à maintenir votre système à jour. Ce chapitre décrit les fonctions
élémentaires de Portage.
-
La variable USE
Les options de la variable USE sont très importantes dans Gentoo. Ce chapitre
décrit comment les utiliser et explique en quoi elles influencent votre
système.
-
Portage et ses fonctionnalités
Ce chapitre décrit les différentes fonctionnalités qui permettent d'améliorer
l'utilisation de Portage et notamment comment réduire les temps de compilation.
-
Les scripts d'initialisation
Gentoo utilise un format particulier pour ses scripts d'initialisation qui,
entre autres, permet de gérer les dépendances et les fonctionnalités
virtuelles. Ce chapitre décrit ces possibilités et comment utiliser ces
scripts.
-
Variables d'environnement
Il est très facile de définir des variables d'environnement dans Gentoo. Ce
chapitre explique comment faire et liste quelques variables très utilisées.
-
Utiliser Portage
Cette partie décrit en profondeur Portage, l'outil de gestion des paquets
logiciels de Gentoo.
-
Fichiers et répertoires
Pour maîtriser Portage, il est important de connaître les fichiers et
répertoires utilisés par Portage.
-
Les variables de configuration
Portage est très configurable grâce à de nombreuses variables que vous pouvez
définir dans votre environnement ou dans des fichiers de configuration.
-
Faire cohabiter des branches différentes
Les logiciels fournis par Gentoo peuvent être répartis dans des branches
différentes en fonction de leur stabilité et de l'architecture utilisée. Ce
chapitre décrit comment configurer ces branches et vous explique comment
utiliser une branche alternative seulement pour certains logiciels.
-
Outils supplémentaires
Portage fournit quelques utilitaires supplémentaires qui vous aident à gérer
votre système. Ce chapitre décrit l'utilisation de dispatch-conf et d'autres
outils.
-
Diverger de l'arbre officiel
Ce chapitre vous donne quelques trucs et astuces pour utiliser votre propre
arbre Portage, pour ne synchroniser que les catégories de votre choix, pour
injecter des paquets, etc.
-
Configuration du réseau sous Gentoo
Cette partie explique en détail comment configurer vos interfaces réseaux sous
Gentoo.
-
Préparation
Un guide pour configurer rapidement votre interface réseau dans la plupart des
environnements.
-
Configuration avancée
Nous apprendrons ici comment fonctionne la configuration. Vous devez savoir ceci
avant d'en apprendre plus sur les modules réseaux.
-
Les modules réseaux
Gentoo fournit un système de configuration du réseau flexible. Vous apprendrez
ici comment choisir votre client DHCP ou mettre en place une agrégation de
liens, un pont réseau, un réseau virtuel et plus encore.
-
Les réseaux sans fil
Le sans fil n'est pas simple, espérons qu'on fera marcher le vôtre.
-
Ajout de fonctionnalités
Si vous n'en avez pas encore assez, vous pouvez aussi ajouter vos propres
fonctions pour personnaliser les connexions des interfaces.
-
Gestion du réseau
Pour les utilisateurs de portables ou simplement les gens qui se déplacent sur
plusieurs réseaux.
A. Installer Gentoo
1. À propos de l'installation de Gentoo
1.a. Introduction
Welcome!
First of all, welcome to Gentoo. You are about to enter the world
of customization and performance. When installing Gentoo, this is made clear to
you several times -- you can choose how much you want to compile yourself, how
to install Gentoo, what system logger you want, etc.
Gentoo is a fast, modern meta-distribution with a clean and flexible
design. Gentoo is built around free software and doesn't hide from its
users what is beneath the hood. Portage, the package maintenance system
which Gentoo uses, is written in Python, meaning you can easily view and
modify the source code. Gentoo's packaging system uses source code
(although support for precompiled packages is included too) and
configuring Gentoo happens through regular text files. In other words,
openness everywhere.
It is very important that you understand that empowerment is what makes
Gentoo run. We try not to force anything on our users and try our best to
empower you to make the choices you wish. If you feel a change should be made,
please file a bug report about it.
How do I go about Installing Gentoo?
Gentoo Linux comes with two versions of an easy to use Installer. A GTK+ based
installer (for use with an X based environment) and a Dialog based installer for
use on the console. Chapter 3 of the handbook deals with the GTK+ based
installer while Chapter 4 is for the Dialog based one.
Sometimes, you are given a certain choice in the handbook. We try our best to
explain what the pros and cons are. We will continue then with a default choice,
identified by "Default: " in the title. The other possibilities are
marked by "Alternative: ". Do not think that the default is
what we recommend. It is however what we believe most users will use.
Sometimes you can pursue an optional step. Such steps are marked as
"Optional: " and are therefore not needed to install Gentoo.
However, some optional steps are dependant on a previous decision you
made. We will inform you when this happens, both when you make the
decision, and right before the optional step is described.
What are my Options?
You can install Gentoo in many different ways. You can download and install from
one of our Installation CDs, from an existing distribution, from a bootable CD
(such as Knoppix), from a netbooted environment, from a rescue floppy, etc.
This document covers the installation using a Gentoo Linux Installation CD, a
bootable CD that contains everything you need to get Gentoo Linux up and
running. There are two types of Installation CDs, the InstallCD and the
Installer LiveCD. The InstallCD is a minimal environment which contains only
those packages necessary for installing Gentoo Linux. The LiveCD is a complete
Gentoo Linux environment and can be used for multiple tasks, one of which is
installing Gentoo Linux. The LiveCD is not available on all architectures at
this time. If your architecture does not have a LiveCD, then this document will
refer to the Universal InstallCD for you.
This installation approach however does not immediately use the latest version
of the available packages; if you want this you should check out the
Installation Instructions inside our Gentoo Linux Handbooks.
For help on the other installation approaches,
please read our Alternative Installation
Guide. We also provide a Gentoo Installation Tips &
Tricks document that might be useful to read as well. If you feel that
the current installation instructions are too elaborate, feel free to use our
Quick Installation Guide available from our Documentation Resources if your architecture
has such a document available.
Troubles?
If you find a problem in the installation (or in the installation
documentation), please check the errata from our Gentoo Release Engineering Project,
visit our bug tracking
system and check if the bug is known. If not, please create a bug report
for it so we can take care of it. Do not be afraid of the developers who are
assigned to (your) bugs -- they generally don't eat people.
Note though that, although the document you are now reading is
architecture-specific, it will contain references to other architectures as
well. This is due to the fact that large parts of the Gentoo Handbook use source
code that is common for all architectures (to avoid duplication of efforts and
starvation of development resources). We will try to keep this to a minimum
to avoid confusion.
If you are uncertain if the problem is a user-problem (some error you
made despite having read the documentation carefully) or a
software-problem (some error we made despite having tested the
installation/documentation carefully) you are free to join #gentoo on
irc.freenode.net. Of course, you are welcome otherwise too :)
If you have a question regarding Gentoo, check out our Frequently Asked
Questions, available from the Gentoo Documentation. You can
also view the FAQs on our
forums. If you can't find the answer
there ask on #gentoo, our IRC-channel on irc.freenode.net. Yes, several of
us are freaks who sit on IRC :-)
1.b. Fast Installation using the Gentoo Reference Platform
What is the Gentoo Reference Platform?
The Gentoo Reference Platform, from now on abbreviated to GRP, is a snapshot of
prebuilt packages users (that means you!) can install during the installation
of Gentoo to speed up the installation process. The GRP consists of all
packages required to have a fully functional Gentoo installation. They are not
just the ones you need to have a base installation up to speed in no time, but
all lengthier builds (such as xorg-x11, GNOME, OpenOffice, Mozilla, ...)
are available as GRP packages too.
However, these prebuilt packages aren't maintained during the lifetime of the
Gentoo distribution. They are snapshots released at every Gentoo release and
make it possible to have a functional environment in a short amount of time. You
can then upgrade your system in the background while working in your Gentoo
environment.
How Portage Handles GRP Packages
Your Portage tree - the collection of ebuilds (files that contain all
information about a package, such as its description, homepage, sourcecode URLs,
compilation instructions, dependencies, etc.) - must be synchronised with the
GRP set: the versions of the available ebuilds and their accompanying GRP
packages must match.
For this reason you can only benefit from the GRP packages Gentoo provides while
performing the current installation approach. GRP is not available for those
interested in performing an installation using the latest versions of all
available packages.
Is GRP Available?
Not all architectures provide GRP packages. That doesn't mean GRP isn't
supported on the other architectures, but it means that we don't have the
resources to build and test the GRP packages.
At present we provide GRP packages for the following architectures:
-
The amd64 architecture (amd64)
-
The ppc architecture (ppc32, ppc64)
-
The sparc architecture (sparc64)
-
The x86 architecture (athlon, athlon-xp, athlon-mp, pentium-pro,
pentium2, pentium3, pentium4 and pentium-m) Note: The packages are for i686
and are available on the Installer LiveCD.
If your architecture (or subarchitecture) isn't on this list, you are not
able to opt for a GRP installation.
Now that this introduction is over, let's continue with Booting the Universal InstallCD/Installer
LiveCD.
2. Démarrer le CD d'installation
2.a. Matériel requis
Introduction
Avant de débuter, nous allons présenter le matériel requis pour installer
Gentoo avec succès sur votre système.
Matériel requis
| Processeur |
i486 ou plus récent |
| Mémoire |
64 Mo |
| Espace disque |
1.5 Go (plus une zone de mémoire virtuelle) |
| Memoire virtuelle (swap) |
Au moins 256 Mo |
2.b. Les différentes approches
Introduction
Gentoo Linux peut être installé en utilisant une archive stage3. Une
telle archive contient un environnement minimal d'utilisation à partir duquel
vous pouvez installer Gentoo sur votre système.
Les installations à partir des stage1 et stage2 ne sont pas couvertes par ce
manuel. Veuillez consulter notre FAQ
à ce sujet.
Le CD d'installation universel
Un CD d'installation est un CD-ROM amorçable qui contient un environnement Gentoo
autonome. Cela vous permet de démarrer Linux à partir du CD-ROM. Pendant le
chargement, votre matériel est détecté et les pilotes appropriés sont chargés.
Ces CD sont maintenus par les développeurs Gentoo.
Deux CD d'installation existent :
-
Le CD d'installation Universal est amorçable et contient tout ce dont vous avez
besoin pour réaliser votre installation, y compris différentes archives
stage3 optimisées pour plusieurs sous-architectures.
-
Le CD d'installation Minimal est un petit CD dont la seule utilité est
d'amorcer le système, de préparer le réseau et d'installer Gentoo.
Il n'est pas utilisable pour l'installation décrite dans ce guide.
Vous avez peut-être vu des CD nommés « Package CD » sur nos miroirs.
Ces CD ne sont pas amorçables et contiennent des paquets pré-compilés qui
peuvent être utilisés pour des installations sans connexion à Internet. Ces
paquets sont, entre autres, OpenOffice.org, KDE, GNOME, etc.
2.c. Télécharger, graver et amorcer un CD d'installation Gentoo
Télécharger et graver un CD d'installation
Nous débuterons par le téléchargement puis la gravure du CD d'installation universel. Nous
avons déjà détaillé les différents CD disponibles, mais où pouvez-vous les
trouver ?
Vous pouvez télécharger le CD d'installation universel (et aussi un PackageCD si vous le
souhaitez) à partir d'un de nos miroirs.
Les CD d'installation se trouvent dans le sous-répertoire
releases/x86/2005.1-r1/installcd et les PackageCD dans
releases/x86/2005.1/packagecd.
Les packageCD pour 686, athlon-xp, pentium3 et pentium4 sont disponibles via
BitTorrent.
Dans ce répertoire, vous trouverez plusieurs fichiers ISO. Ce sont des images
de CD que vous pouvez utiliser pour graver un CD-R.
Pour vérifier que le fichier téléchargé n'a pas été corrumpu pendant le
transfert, vous devriez vérifier son intégrité en calculant sa somme de
vérification MD5 et en comparant le résultat avec la somme que nous publions
sur notre site, par exemple dans le fichier
install-x86-minimal-2005.1.iso.md5. Vous pouvez utiliser l'outil
md5sum sous Linux ou md5sum sous Windows.
Un autre moyen de vérifier la validité du fichier téléchargé est d'utiliser
GnuPG pour tester la signature électronique que nous fournissons (le fichier
qui se termine en .asc). Téléchargez le fichier avec la signature
et procurez-vous la clé publique :
Exemple de code 3.1 : Obtenir la clé publique |
$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058
|
Ensuite, vérifiez la signature :
Exemple de code 3.2 : Vérifier la signature |
$ gpg --verify <fichier_signature> <fichier_iso_téléchargé>
|
Afin de graver le(s) ISO, vous devez utiliser la gravure brute (raw-burning).
La manière de procéder dépend de votre programme. La manière de procéder avec
cdrecord et K3B est décrite ci-dessous. Vous trouverez d'autres
méthodes dans notre FAQ.
-
Avec cdrecord, tapez simplement cdrecord dev=/dev/hdc <fichier
.iso> (remplacez /dev/hdc par le chemin d'accès du
fichier matériel de votre graveur).
-
Avec K3B, sélectionnez Tools > CD > Burn Image.
Dans la zone « Image to Burn », sélectionnez le fichier ISO et
cliquez sur Start.
Démarrer le CD d'installation
Important :
Lisez cette section en entier avant de continuer, car vous n'aurez pas toujours
le temps de lire avant d'agir.
|
Une fois que vous avez gravé votre CD d'installation, vous devez amorcer votre
système avec celui-ci. Enlevez tous les CD de vos lecteurs, redémarrez votre
système et entrez dans la configuration du BIOS. Cela se fait habituellement
en tapant la touche Suppr, F1 ou Échap, selon le BIOS. Dans la configuration du
BIOS, changez l'ordre de démarrage afin que le CD-ROM soit testé avant le
disque dur. Vous pouvez habituellement accéder à ce paramètre dans la section
CMOS Setup. Si le CD-ROM n'est pas prioritaire pour l'amorçage, le système va
simplement démarrer à partir du disque dur et ignorer le CD-ROM.
Maintenant, insérez le CD d'installation dans le lecteur de CD-ROM (vous
l'aviez deviné ?) puis redémarrez. Une invite de commande devrait
apparaître à l'écran. Vous pouvez alors taper Entrée pour débuter le processus
d'installation avec les options d'amorçage par défaut. Si vous le souhaitez,
vous pouvez plutôt spécifier des options et un noyau particuliers avant de
taper Entrée.
Spécifier un noyau ? Oui, plusieurs noyaux sont disponibles sur nos
CD d'installation. Le noyau par défaut est gentoo. Les autres sont utilisés avec
du matériel particulier et des variantes -nofb existent pour désactiver
le « framebuffer ».
Voici un aperçu des différents noyaux disponibles :
| Noyau |
Description |
| gentoo |
Un noyau 2.6 qui supporte les machines multiprocesseurs |
| gentoo-nofb |
Identique à gentoo sans le support pour le
« framebuffer » |
| memtest86 |
Teste la mémoire de votre ordinateur |
Vous pouvez aussi passer des options au noyau. Ces options
représentent des paramètres qui peuvent être activés/désactivés selon vos choix.
Voyez les différentes options disponibles ci-dessous :
Exemple de code 3.3 : Options disponibles |
- agpgart Charge agpgart. (Utilisez si vous avez des problèmes avec votre
carte graphique.)
- acpi=on Active le support acpi.
- ide=nodma Désactive le dma pour des disques IDE récalcitrants.
- doscsi Recherche des périphériques SCSI. (Plante avec certaines cartes
réseau.)
- dopcmcia Active les services pcmcia notamment des lecteurs de CD-ROM de ce type.
- nofirewire Désactive le support des périphériques firewire.
- nokeymap Désactive la sélection d'une disposition clavier autre que l'américaine.
- docache Copie le CD complet en mémoire pour pouvoir éjecter le CDROM et
en insérer un autre.
- nodetect Ne fait aucune détection du matériel.
- nousb Ne charge pas le module usb dans initrd, désactive hotplug.
- nodhcp N'attribue pas d'IP via dhcp quand une carte réseau est détectée.
- nohotplug N'active pas le service hotplug.
- noapic Désactive apic. (Essayez-la si vous avez des problèmes de
reconnaissance du matériel.)
- noevms Désactive le chargement des modules EVMS2
- nolvm2 Désactive le chargement des modules LVM2
- hdx=stroke Permet de partionner le disque entier même si le BIOS ne le permet pas.
- noload=module1[,module2[,...]]
Désactive le chargement des modules spécifiés
|
Maintenant, amorcez votre CD, choisissez un noyau (si vous n'êtes pas
satisfait du noyau gentoo par défaut) et des options de démarrage.
Voici un exemple illustrant comment amorcer le noyau gentoo avec les
options dopcmcia :
Exemple de code 3.4 : Amorcer un CD d'installation |
boot: gentoo dopcmcia
|
Vous verrez alors un autre écran de chargement avec une barre de progression.
Si vous installez Gentoo sur un système équipé d'un clavier international (non
US), utilisez la touche Alt+F1 pour basculer vers un écran plus détaillé et suivez
les indications. Si vous ne sélectionnez pas votre type de clavier dans les dix
premières secondes, le clavier par défaut (US) sera sélectionné. Lorsque le
processus de chargement est terminé, vous serez automatiquement connecté à
Gentoo Linux Live en tant qu'utilisateur root (qui est le superutilisateur).
Vous devriez avoir une invite de commande root (« # ») sur la console
active. Vous pouvez aussi passer aux autres consoles en tapant Alt+F2, Alt+F3
et Alt+F4. Retournez à la première console en tapant Alt+F1.
Continuez votre lecture avec la section
Configuration du matériel supplémentaire.
Configuration du matériel supplémentaire
Lorsque le CD d'installation démarre, il tente de détecter votre matériel et charge les
modules du noyau appropriés pour supporter ce matériel. Dans la plupart des cas
cette auto-détection donne d'excellents résultats. Notez que le CD d'installation pour
SPARC ne fait aucune auto-détection. Toutefois, il se peut que les modules du
noyau dont vous avez besoin ne soient pas tous chargés. Si l'auto-détection PCI
a ignoré une partie de votre matériel, vous devrez charger les modules
appropriés manuellement.
Dans l'exemple suivant, nous tentons de charger le module 8139too
(support de certaines interfaces réseau) :
Exemple de code 3.5 : Charger des modules du noyau |
# modprobe 8139too
|
Facultatif : régler les performances des disques durs
Si vous êtes un utilisateur expérimenté, vous souhaitez peut-être régler les
performances des disques durs IDE en utilisant hdparm. Avec les
arguments -tT, vous pouvez tester les performances de vos disques
(exécutez ce test plusieurs fois pour juger plus précisément des résultats).
Exemple de code 3.6 : Tester les performances des disques |
# hdparm -tT /dev/hda
|
Pour régler les performances, vous pouvez copier les exemples suivants (ou
expérimenter) qui utilisent /dev/hda comme disque dur
(substituez par le chemin d'accès à votre disque) :
Exemple de code 3.7 : Régler les performances du disque dur |
# hdparm -d 1 /dev/hda
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda
|
Facultatif : comptes utilisateurs
Si vous souhaitez permettre à d'autres personnes d'accéder à votre
environnement d'installation ou si vous voulez dialoguer en ligne avec
irssi sans être root pour des raisons de sécurité, vous devez créer les
comptes utilisateurs nécessaires et changer le mot de passe de root.
Pour changer le mot de passe de root, utilisez l'utilitaire passwd :
Exemple de code 3.8 : Changer le mot de passe de root |
# passwd
New password:
Re-enter password:
|
Pour créer un compte utilisateur, on saisit d'abord son nom, puis son mot de
passe. Les programmes useradd et passwd sont utilisés pour ces
tâches. Dans l'exemple suivant, nous créons un utilisateur nommé « john ».
Exemple de code 3.9 : Création d'un compte utilisateur |
# useradd -m -G users john
# passwd john
New password:
Re-enter password:
|
Vous pouvez passer de l'utilisateur root à l'utilisateur que vous venez de
créer avec la commande su :
Exemple de code 3.10 : Devenir john |
# su - john
|
Facultatif : consulter la documentation pendant l'installation
Si vous désirez consulter le Manuel Gentoo, sur le CD ou en ligne, vous devez
avoir configuré un compte utilisateur. Ensuite,
tapez Alt-F2 pour basculer sur un autre terminal et connectez-vous avec
le compte utilisateur que vous avez créé.
Pour lire la documentation qui accompagne le CD, il vous suffit de lancer
links2 :
Exemple de code 3.11 : Consulter la documentation sur le CD |
# links2 /mnt/cdrom/docs/html/index.html
|
Cependant, quand cela est possible, il est préférable de lire le Manuel en
ligne, car il est plus à jour. Vous pouvez utiliser links2, mais
uniquement si vous avez configuré votre accès au réseau.
Exemple de code 3.12 : Consulter la documentation en ligne |
# links2 http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml
|
Vous pouvez revenir à votre terminal initial en tapant Alt-F1.
Facultatif : démarrage du démon SSH
Si vous voulez permettre à d'autres utilisateurs d'accéder à votre ordinateur
pendant le processus d'installation (peut-être que ces utilisateurs vous
aideront à installer Gentoo ou même le feront pour vous), vous devez leur
fournir un compte utilisateur ou le mot de passe de root. (Cette dernière option
n'est envisageable que si vous faites entièrement confiance à cet
utilisateur.)
Pour démarrer le démon SSH, exécutez la commande suivante :
Exemple de code 3.13 : Démarrer le démon SSH |
# /etc/init.d/sshd start
|
Avant de pouvoir utiliser sshd, vous devez Configurer votre connexion réseau.
3. Installer via l'interface basée sur GTK+
3.a. Bienvenue
Avant de commencer
Une fois que le Gentoo Linux Installer (GLI) a fini de charger, vous serez
accueilli par un écran de bienvenue. Il contient une sympathique introduction
au processus d'installation de Gentoo sur votre ordinateur. N'oubliez pas de
lire le détail de chaque option avec attention. Une aide détaillée est
disponible pour chaque étape de l'installation, il suffit de cliquer sur
Help en bas à gauche. Nous vous recommandons de toujours bien lire
l'aide avant de faire vos choix. Veuillez remarquer qu'à n'importe quel
moment de l'installation, vous pouvez enregistrer votre progression pour
pouvoir poursuivre l'installation plus tard.
3.b. Configuration avant l'installation
Facultatif : configuration manuelle du réseau
Dans la section suivante, vous devez configurer votre réseau. L'installateur
devrait déjà avoir détecté et configuré votre réseau pour vous, mais si ce
n'est pas le cas, vous pouvez le configurer manuellement. Dans l'onglet
Misc., vous pouvez spécifier l'emplacement de votre choix ou bien
garder le chemin par défaut, /var/log/installer.log, pour
l'emplacement où l'installateur stockera ses journaux.
Facultatif : installation à distance
Si vous voulez activer l'accès par SSH à la machine, vous pouvez lancer
sshd et spécifier un mot de passe root.
Facultatif : charger des modules supplémentaires du noyau
S'il vous faut charger d'autres modules du noyau pour votre matériel, donnez
leurs noms dans la ligne appropriée en les séparant par un espace.
Attention :
Ne changez pas la sélection Install mode pour quoi que ce soit d'autre
que Normal. Cette fonctionnalité est encore au stade expérimental et la
modifier vous laissera avec un système qui ne démarre pas !
|
3.c. Partitionnement
Préparer les disques
Afin d'installer Gentoo sur votre ordinateur, il vous faudra préparer les
disques. L'écran Partitioning vous affichera une liste des disques
détectés et vous permettra de spécifier le système de fichiers que vous voulez
avoir sur vos partititons. Cliquer sur Clear partitions effacera toutes
les partitions de votre disque, soyez donc prudent avec cette option ! Il
est aussi possible de redimensionner certains types de partition.
Si vous choisissez d'utiliser le Recommended layout (NdT, disposition
recommandée), l'installateur créera trois partitions : 100Mo pour
/boot, une partition /swap jusqu'à 512Mo et le reste
de l'espace disponible sera utilisé pour /, la partition racine.
Si vous avez plus de 4Go d'espace non partitionné, l'utilisation de
Recommended layout configurera automatiquement vos partitions sans
détruire aucune donnée sur les partitions existantes.
3.d. Montage réseau
Facultatif : définir les montages réseau.
Cet écran vous permet de configurer et utiliser n'importe quel montage réseau
pendant et après l'installation. Cliquez sur New pour commencer la
configuration. Pour le moment, seul NFS est supporté.
3.e. Sélection de l'étape
Génération dynamique de l'étape
Comme on effectue une installation sans connexion internet, il vous
faut cocher GRP Install ainsi que Dynamic parmi les
options proposées. Tout ce qu'il vous faut pour construire votre système sera
alors généré à partir du LiveCD.
Attention :
Ne sélectionnez pas d'autre option que celles spécifiées ci-dessus
lorsque vous faites une installation sans connexion.
|
3.f. Arbre Portage
Obtenir l'arbre Portage
Il vous faut choisir Snapshot à cette étape. L'installateur installera
automatiquement un arbre Portage à partir du LiveCD une fois que vous aurez
sélectionné Snapshot. Il n'est pas nécessaire de spécifier l'URI d'un
instantané.
3.g. make.conf
Options de la variable USE
Étant donné que vous faites une installation GRP/sans réseau, vous n'aurez pas
la possibilité de choisir les options de la variable USE avant l'installation.
Cependant, vous êtes libre de configurer vos propres options de la variable USE
dans /etc/make.conf après avoir redémarré votre système une fois
l'installation terminée.
CFLAGS
Par contre, vous devriez choisir le type de votre processeur dans la section
CFLAGS ainsi que les optimisations supplémentaires que vous voulez,
telles que -O2 et -pipe.
Autre
Vous devriez choisir toute autre option que vous voulez pour plus tard dès
maintenant. Use unstable (~arch) vous permettra d'utiliser les paquets
de la branche instable de l'arbre de Portage. Build binary packages crée
des archives binaires prêtes pour l'installation de chaque paquet que vous
compilez sur votre système. DistCC vous permet de partager la tâche de
compilation avec un autre ordinateur via le réseau. ccache sauvegarde le
code compilé pour une utilisation ultérieure, et peut donc grandement diminuer
le temps de compilation si vous réinstallez un même paquet.
Vous ne serez pas autorisé à changer la variable CHOST, car ceci
pourrait sérieusement endommager votre installation. Dans MAKEOPTS, vous
définissez le nombre de compilations parallèles qu'il peut y avoir lorsque vous
installez un paquet. Un bon choix est le nombre de processeurs de votre machine
plus un, mais ce n'est pas toujours la meilleur solution. Sur un système à
processeur unique, -j2 est généralement utilisé.
3.h. Sources du noyau
Utiliser le noyau du LiveCD
Il vous faut utiliser le noyau présent sur le LiveCD pour une installation
GRP/sans réseau. C'est en gros un noyau gentoo-sources compilé par
genkernel, l'utilitaire de compilation automatisée de noyau Gentoo, et
qui vous donne un noyau qui détecte automatiquement le matériel au démarrage et
le configure.
Si vous voulez une image de fond lors du démarrage, choisissez l'option
Enable bootsplash.
3.i. Chargeur de démarrage
Faire son choix
Cette étape vous permet de choisir votre chargeur de démarrage et, en option,
de spécifier les paramètres noyau supplémentaires qui seront utilisés au
démarrage.
Vous pouvez spécifier le disque de démarrage en choisissant l'option appropriée
dans Boot Drive. Sous Linux, le premier disque IDE est appelé
hda, le second hdb et ainsi de suite. Si vous avez des disques
SATA ou SCSI, ils seront appelés sda, sdb, etc. Veuillez choisir
l'option adéquate pour votre système.
S'il vous faut passer des options additionnelles au noyau, comme des
informations pour la video ou VGA, il suffit de les ajouter dans la section
Extra kernel parameters.
Si vous avez utilisé des cavaliers avec votre disque dur parce que votre BIOS
ne gère pas les gros disques, il vous faut ajouter l'option hdx=stroke.
Si vous avez des périphériques SCSI, vous devriez ajouter doscsi en
option au noyau.
3.j. Fuseau horaire
Choisir son fuseau horaire
Étudiez la carte et choisissez la région la plus proche de là où vous vous
trouvez. Plus tard, il vous sera demandé si vous voulez régler votre horloge
sur UTC ou sur l'heure locale.
3.k. Réseau
Information sur le matériel
Lors de cette étape, vous aurez la possibilité de configurer les divers
périphériques d'interface réseau de votre ordinateur. Regardez avec attention
les options disponibles.
Dans l'onglet Hostname/Proxy Information/Other, il vous faudra choisir
un nom d'hôte pour votre machine. Vous pourrez aussi spécifier un serveur
mandataire ainsi que les informations DNS si nécessaire.
3.l. Démons
Démon Cron
Les démons Cron sont des programmes utiles qui lancent des tâches à des heures
programmées. Même s'il n'est pas nécessaire d'en installer un, ils
peuvent se révéler très utiles.
Journaux systèmes
Un journaliseur système est une nécessité pour tout système d'exploitation Linux.
Faites votre choix parmi les propositions.
3.m. Paquets supplémentaires
Facultatif : installer des paquets supplémentaires.
Le LiveCD contient un bon nombre de paquets précompilés. Si vous voulez en
installer un, cochez la case correspondante.
Important :
Comme on est dans une installation sans connexion, vous ne pouvez pas ajouter
de paquets autres que ceux affichés par l'installateur.
|
3.n. Démarrage des services
Cet écran vous permet de choisir les divers services qu'il faudra charger lors
du démarrage du système. Étudiez les options disponibles et leur description
correctement puis faites votre choix. Par exemple, si vous avez choisi
d'installer xorg-x11 et voulez démarrer directement sur l'interface
graphique, alors choisissez xdm dans la liste.
3.o. Autres réglages
Options diverses
Vous pouvez maintenant modifier divers paramètres comme la disposition du
clavier, le gestionnaire de connexion, l'éditeur par défaut et si votre horloge
matérielle doit être configurée en UTC ou à l'heure locale.
3.p. Utilisateurs
Ajouter les utilisateurs et groupes
D'abord, choisissez un mot de passe pour l'administrateur système
(l'utilisateur root).
Nous vous recommandons fortement de créer un utilisateur normal pour vos
tâches quotidiennes. Travailler en tant que root est dangereux et
devrait être évité ! Créez vos utilisateurs, ajoutez-les aux groupes
nécessaires et choisissez leur mot de passe. Vous pouvez aussi changer leur
répertoire personnel, configurer leur shell ainsi qu'ajouter des commentaires
utiles.
3.q. Vérification
Terminer la configuration
Afin de vous assurez que votre système est configuré correctement, veuillez
bien vérifier chaque étape du processus d'installation. Quand
ceci est terminé, vous pouvez enregistrer et quitter ou cliquer sur
Install pour commencer l'installation automatique de Gentoo.
Vous êtes libre de naviguer sur le LiveCD durant l'installation. La fenêtre
d'installation vous avertira lorsque ce sera fini. Vous pourrez alors fermer
la fenêtre en cliquant sur x en haut à droite. Quand vous serez prêt,
vous pourrez vous déconnecter et redémarrer. Assurez-vous d'avoir bien retiré
le LiveCD au redémarrage.
Félicitations, votre système est fin prêt ! Vous pouvez poursuivre avec
Et que faire ensuite ? pour en
apprendre plus sur Gentoo.
4. Installer via l'interface en mode texte
4.a. Bienvenue
Avant de commencer
Une fois que vous aurez démarré le Gentoo Linux Installer LiveCD, il essaiera
de lancer une interface graphique. S'il échoue, il vous affichera alors une
invite de commande. Pour lancer l'installateur, tapez simplement :
Exemple de code 1.1 : Démarrer l'installateur |
# installer
|
Une fois que le Gentoo Linux Installer (GLI) a fini de charger, vous serez
accueilli par un écran de bienvenue. Il contient une sympathique introduction
au processus d'installation de Gentoo sur votre ordinateur. N'oubliez pas de
lire le détail de chaque option avec attention. Une aide détaillée est
disponible pour chaque étape de l'installation en haut de l'écran. Nous vous
recommandons de toujours bien lire l'aide avant de faire vos choix. Veuillez
noter qu'à n'importe quel moment de l'installation, vous pouvez enregistrer
votre progression pour pouvoir poursuivre l'installation plus tard. Utilisez la
touche Tab de votre clavier pour vous déplacer dans les menus à l'écran
et la touche Entrée pour valider une action.
4.b. Partitionnement
Préparer les disques
Afin d'installer Gentoo sur votre ordinateur, il vous faudra préparer les
disques. L'écran Partitioning vous affichera une liste des disques
détectés et vous permettra de spécifier le système de fichiers que vous voulez
avoir sur vos partiitons. Sélectionner Clear partitions effacera toutes
les partitions de votre disque, soyez donc prudent avec cette option ! Il
est aussi possible de redimensionner certains types de partitions.
Si vous choisissez d'utiliser le Recommended layout (NdT, disposition
recommandée), l'installateur créera trois partitions : 100Mo pour
/boot, une partition /swap jusqu'à 512Mo et le reste
de l'espace disponible sera utilisé pour /, la partition racine.
Si vous avez plus de 4Go d'espace non partitionné, l'utilisation de
Recommended layout configurera automatiquement vos partitions sans
détruire aucune donnée sur les partitions existantes.
4.c. Montage réseau
Facultatif : définir les montages réseau
Cet écran vous permet de configurer et utiliser n'importe quel montage réseau
pendant et après l'installation. Cliquez sur New pour commencer la
configuration. Pour le moment, seul NFS est supporté.
4.d. Sélection de l'étape
Génération dynamique de l'étape
Comme on effectue une installation sans connexion internet, il vous
faut cocher GRP Install parmi les options proposées. À l'écran
suivant, choisissez Create from CD. Tout ce qu'il vous faut pour
construire votre système sera alors généré à partir du LiveCD.
Attention :
Ne sélectionnez pas d'autre option que celles spécifiées ci-dessus
lorsque vous faites une installation sans connexion.
|
4.e. Sources du noyau
Utiliser le noyau du LiveCD
Il vous faut utiliser le noyau présent sur le LiveCD pour une installation
GRP/sans réseau. C'est en gros un noyau gentoo-sources compilé par
genkernel, l'utilitaire de compilation automatisée de noyau Gentoo,
et qui vous donne un noyau qui détecte automatiquement le matériel au démarrage
et le configure.
Sélectionnez LiveCD kernel et poursuivez.
4.f. Chargeur de démarrage
Faire son choix
Cette étape vous permet de choisir votre chargeur de démarrage. L'installateur
configurera automatiquement le chargeur choisi.
4.g. Fuseau horaire
Choisir son fuseau horaire
Étudier la liste et choisissez la région la plus proche de là où vous vous
trouvez.
4.h. Réseau
Ajouter un périphérique réseau
Lors de cette étape, vous aurez la possibilité de configurer les divers
périphériques d'interface réseau détectés sur votre ordinateur. Regardez avec
attention les options disponibles.
L'écran suivant vous donne le choix entre le DHCP ou la configuration manuelle
de l'adresse IP. Une fois que vos interfaces réseaux sont correctement
configurées, il vous faut donner un nom d'hôte à votre machine. Vous pouvez
aussi spécifier un nom de domaine et des informations de serveur DNS si
nécessaire.
4.i. Paquets supplémentaires
Facultatif : installer des paquets supplémentaires.
Le LiveCD contient un bon nombre de paquets précompilés. Si vous voulez en
installer un, cochez la case correspondante.
Important :
Comme on est dans une installation sans connexion, vous ne pouvez pas ajouter
de paquets autres que ceux affichés par l'installateur.
|
4.j. Utilisateurs
Ajouter les utilisateurs et groupes.
D'abord, choisissez un mot de passe pour l'administrateur système
(l'utilisateur root).
Nous vous recommandons fortement de créer un utilisateur normal pour vos
tâches quotidiennes. Travailler en tant que root est dangereux et
devrait être évité ! Créez vos utilisateurs, ajoutez-les aux groupes
nécessaires et choisissez leur mot de passe. Vous pouvez aussi changer leur
répertoire personnel, configurer leur shell ainsi qu'ajouter des commentaires
utiles.
4.k. Vérification
Terminer la configuration
Afin de vous assurez que votre système est configuré correctement, veuillez
bien vérifier chaque étape du processus d'installation. Quand ceci est terminé,
vous pouvez enregistrer et quitter ou sélectionner Install pour
commencer l'installation automatique de Gentoo.
L'installateur vous préviendra une fois l'installation finie. Il vous renverra
à l'invite de commande. Tout ce qu'il vous faudra faire pour redémarrer sera
de taper :
Exemple de code 11.1 : Redémarrer |
# shutdown -r now
|
Félicitations, votre système est fin prêt ! Vous pouvez poursuivre avec
Et que faire ensuite ? pour en
apprendre plus sur Gentoo.
5. Et que faire ensuite ?
5.a. Documentation
Félicitations ! Vous avez maintenant un système Gentoo utilisable. Mais que
pouvez-vous en faire ? Quelle sont les options ? Que pouvez-vous
explorer maintenant ? Gentoo donne beaucoup de possibilités à ses
utilisateurs, et donc beaucoup de fonctionnalités documentées (et d'autres qui
le sont moins).
Vous devriez vraiment regarder la partie suivante du manuel Gentoo : Utiliser Gentoo qui explique comment garder
votre système à jour, installer des logiciels supplémentaires, quelles sont les
options de USE, comment le système d'initialisation de Gentoo fonctionne, etc.
Si vous êtes intéressé par l'optimisation de votre système pour une utilisation
graphique ou que vous voulez apprendre comment configurer votre système pour
qu'il soit entièrement fonctionnel en mode graphique, consultez la Documentation Gentoo relative au
bureau. Le Guide de
localisation vous sera particulièrement utile si vous préférez utiliser
un système francisé.
De plus, notre Manuel de sécurité Gentoo
Linux pourra sans doute vous être utile.
Pour une liste complète de la documentation disponible, regardez notre
Centre de documentation Gentoo.
5.b. Gentoo en Ligne
Vous êtes bien sûr invité sur les Forums
Gentoo (en anglais) et sur le Forum Gentoo
francophone, ou sur un de nos nombreux canaux
IRC Gentoo en anglais, en français, et bien d'autres langues.
Nous avons aussi quelques listes de
diffusion (N.D.T. : surtout en anglais, mais il y a aussi des listes
francophones) ouvertes à tous les utilisateurs. Cette page vous explique comment y
participer.
Nous nous taisons et vous laissons apprécier votre installation :)
5.c. Modifications apportées à Gentoo depuis la sortie de la version 2006.0
Les modification ?
Il n'y a pas eu de modifications importantes depuis la sortie de cette version.
B. Utiliser Gentoo
1. Introduction à Portage
1.a. Bienvenue dans le monde de Portage
Portage est probablement l'innovation de Gentoo la plus remarquable en ce qui
concerne la gestion des logiciels. Sa grande flexibilité et ses nombreuses
fonctionnalités font parfois dire de Portage qu'il est le meilleur outil de
gestion des logiciels pour Linux.
Portage a été écrit en langage Python et en langage Bash qui sont tous les deux des
langagages scriptés, c'est-à-dire que 100 % du code source est installé et
consultable sur tous les systèmes Gentoo.
La plupart des utilisateurs interagiront avec Portage via la commande
emerge. Ce chapitre n'a pas pour vocation de dupliquer toute
l'information disponible dans la page manuel de emerge. Pour consulter la
page man, faites :
Exemple de code 1.1 : Consulter la page man de emerge |
$ man emerge
|
1.b. L'arbre Portage
Les ebuilds
Quand nous parlons de paquets, nous faisons souvent allusion aux logiciels qui sont disponibles
dans Gentoo grâce à l'arbre de Portage. Celui-ci est un ensemble
d'ebuilds qui sont en fait des fichiers qui donnent toutes les
informations nécessaires à Portage pour maintenir les logiciels (les installer, les rechercher, etc.). Par défaut, ces
ebuilds se trouvent dans le dossier /usr/portage.
Dès que vous employez Portage pour une action relative aux paquets, il utilisera
les ebuilds de votre système. Il est donc important de maintenir les ebuilds de
votre système à jour pour que Portage soit informé de l'apparition de nouvelles versions
des logiciels que vous utilisez ou de correctifs de failles de sécurité.
Mise à jour de l'arbre Portage
L'arbre Portage est généralement mis à jour avec rsync qui est un outil de transfert de
fichiers incrémental et rapide. La mise à jour se fait simplement avec la commande
emerge. L'utilisation de rsync est tout à fait transparente :
Exemple de code 2.1 : Mettre l'arbre Portage à jour |
# emerge --sync
|
Si vous ne pouvez pas utiliser rsync à cause, par exemple, d'un pare-feu, vous
pouvez quand même mettre votre arbre Portage à jour avec la commande
emerge-webrsync. Celle-ci télécharge le dernier instantané de l'arbre
Portage et l'installe sur votre système. Un instantané est généré
automatiquement chaque jour sur les miroirs de Gentoo.
Exemple de code 2.2 : Utiliser emerge-webrsync |
# emerge-webrsync
|
Un avantage supplémentaire qu'apporte emerge-webrsync réside dans le fait que ceci
permet à l'administrateur de n'installer que des instantanés de l'arbre Portage authentifiés par la
clé GPG de la « Gentoo release engineering team ». Des informations complémentaires sons disponibles
dans la section Recherche d'instatanés validés de l'arbre Portage
de la page Portage et ses fonctionnalités.
1.c. Maintenir vos logiciels
Rechercher un paquet
Pour rechercher un logiciel dans l'arbre Portage, vous pouvez utiliser
emerge. En effet, la commande emerge --search affiche la liste des
paquets dont le titre correspond plus ou moins au terme recherché.
Par exemple, pour trouver tous les paquets dont le nom contient
« pdf », utilisez :
Exemple de code 3.1 : Trouver les paquets dont le nom contient « pdf » |
$ emerge --search pdf
|
Si vous voulez aussi chercher dans les descriptions, utilisez l'option
--searchdesc (ou -S) :
Exemple de code 3.2 : Trouver les paquets relatifs à « pdf » |
$ emerge --searchdesc pdf
|
La liste des paquets affichés contient quelques informations utiles pour chaque
paquet. Les libellés sont explicites et se passent de commentaires supplémentaires.
Exemple de code 3.3 : Exemple de résultat d'une recherche avec « emerge --search » |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Installer des logiciels
Une fois que vous avez identifié un paquet que vous voulez installer, il vous
suffit d'utiliser la commande emerge suivie du nom du paquet pour
l'installer. Par exemple, pour installer gnumeric :
Exemple de code 3.4 : Installer gnumeric |
# emerge gnumeric
|
Comme de nombreuses applications dépendent les unes des autres, il se peut que, lorsque vous
essayez d'en installer une, d'autres applications dont cette application dépend (dépendances) soient installées
en même temps. Ne vous inquiétez pas, Portage gère très bien les dépendances. Si vous voulez
connaitre la liste des paquets que Portage installerait si vous installiez un
paquet donné, vous pouvez utiliser l'option --pretend. Voici un exemple :
Exemple de code 3.5 : Lister les paquets à installer pour gnumeric |
# emerge --pretend gnumeric
|
Quand vous installez un paquet avec Portage, il télécharge les sources
nécessaires et les sauvegarde dans le répertoire /usr/portage/distfiles.
Ensuite, Portage décompresse l'archive, compile son contenu et installe le
logiciel. Si vous voulez télécharger les sources sans installer le paquet,
utilisez l'option --fetchonly. Par exemple, pour télécharger les sources
de gnumeric :
Exemple de code 3.6 : Télécharger les sources de gnumeric |
# emerge --fetchonly gnumeric
|
Trouver la documentation d'un paquet installé
De nombreux paquets sont fournis avec leur propre documentation. Parfois l'option USE
doc indique si la documentation d'un paquet doit être installée ou non.
Vous pouvez vérifier l'existence de l'option USE doc avec la commande
emerge -vp <nom du paquet>.
Exemple de code 3.7 : Vérifier l'existence de l'option USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
|
La meilleure façon d'activer l'option USE doc est de le faire paquet par
paquet via /etc/portage/package.use, afin de n'avoir la
documentation que pour les paquets qui vous intéressent. L'activation de manière
globale de cette option est connue pour causer des problèmes de dépendances
circulaires. Pour plus d'informations, veuillez lire le chapitre La variable USE.
Une fois le paquet installé, la documentation se trouve généralement dans un
sous-répertoire au nom du paquet dans le répertoire /usr/share/doc.
Vous pouvez également lister tous les fichiers installés avec l'outil
equery qui fait partie du paquet
app-portage/gentoolkit .
Exemple de code 3.8 : Trouver la documentation d'un paquet |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
|
Supprimer un paquet
Pour désinstaller un paquet de votre système, utilisez emerge --unmerge.
Cette commande supprime les fichiers qui avaient été installés par Portage, mais
ne supprime pas les fichiers de configuration si vous les avez modifiés après
l'installation. Cela vous permet de réutiliser vos fichiers de configuration si
vous réinstallez le paquet plus tard.
Cependant, un avertissement est de mise :Portage ne
vérifie pas que le paquet que vous supprimez est nécessaire au bon
fonctionnement d'un autre paquet. Toutefois, un message s'affichera si vous
essayez de supprimer un paquet important dont la disparition causerait de graves
problèmes.
Exemple de code 3.9 : Supprimer gnumeric de votre système |
# emerge --unmerge gnumeric
|
Quand vous supprimez un paquet, les paquets dont il dépend qui avaient été
installés initialement ne seront pas désinstallés automatiquement. Pour que
Portage recherche les dépendances qui peuvent être supprimées, utilisez l'option
depclean. Nous en reparlerons plus loin.
Mettre votre système à jour
Pour maintenir votre système en bon état et disposer des correctifs de failles
de sécurité, vous devriez le mettre à jour régulièrement. Puisque Portage ne se
base que sur les ebuilds de votre machine, vous devez vous assurez que votre
arbre Portage est à jour. Une fois votre arbre Portage à jour, vous pouvez
mettre votre système à jour avec la commande emerge --update world. Dans
l'exemple ci-dessous, on utilise aussi l'option --ask pour que Portage
affiche la liste des paquets qu'il va mettre à jour et pour qu'il demande une
confirmation.
Exemple de code 3.10 : Mettre votre système à jour |
# emerge --update --ask world
|
Portage recherche alors des versions plus récentes des logiciels que vous avez
installés explicitement et uniquement ceux-là (ceux qui sont listés dans
/var/lib/portage/world). Il ne prendra pas en compte de manière exhaustive leurs dépendances. Si
vous voulez que ces dépendances soient aussi mises à jour,
utilisez aussi l'option --deep :
Exemple de code 3.11 : Mettre à jour votre système y compris les dépendances |
# emerge --update --deep world
|
Mais cela ne veut pas dire pour autant tous les paquets; certains
paquets de votre sysème ne sont nécessaires que durant la phase de compilation des paquets, mais
une fois ces paquets installés, ces dépendances ne sont plus nécessaires. Portage les reconnait comme
dépendances de compilation. Pour les prendre en compte dans le cycle de mise à j*our,
ajoutez --with-bdeps=y
Exemple de code 3.12 : Mise à jour du système entier |
# emerge --update --deep --with-bdeps=y world
|
Étant donné que des mises à jour qui corrigent des failles de sécurité sont
apportées à des paquets que vous n'avez pas explicitement installés, mais qui
ont été installés parce que d'autres paquets en dépendent, il est recommandé
d'exécuter la commande ci-dessus de temps en temps.
Si vous avez modifié les options de la variable
USE, vous devriez également ajouter l'option --newuse pour que
Portage vérifie si certains paquets ne doivent pas être recompilés. Par
exemple :
Exemple de code 3.13 : Une mise à jour complète |
# emerge --update --deep --with-bdeps=y --newuse world
|
Les méta-paquets
Certains paquets ne contiennent aucun logiciel, mais servent à installer un
ensemble de paquets. Par exemple, le paquet kde-meta sert à installer un
environnement KDE complet et provoque l'installation d'un grand nombre de
paquets relatifs à KDE.
Supprimer un tel paquet avec la commande emerge --unmerge n'aurait aucune
influence sur votre système puisque tous les paquets dépendants resteraient
installés.
Portage permet de supprimer les dépendances orphelines, mais, pour cela, vous
devez d'abord mettre votre système complètement à jour en tenant compte
d'éventuelles modifications apportées à votre variable USE. Vous pouvez ensuite
utiliser emerge --depclean pour supprimer les dépendances orphelines.
Par la suite, vous devriez recompiler les applications qui étaient liées
dynamiquement avec les paquets que vous venez de supprimer. Les paquets
désinstallés ne sont plus nécessaires à la bonne marche de ces applications.
Tout cela peut être résumé en trois commandes :
Exemple de code 3.14 : Supprimer les dépendances orphelines |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
La commande revdep-rebuild fait partie du paquet
gentoolkit ; n'oubliez pas de l'installer :
Exemple de code 3.15 : Installer gentoolkit |
# emerge gentoolkit
|
1.d. Licences
Depuis la version 2.1.7 de Portage, vous pouvez accepter ou refuser l'installation de paquets
en fonction de leur licence. Tous les paquets de l'arbre de Portage ont une entrée LICENCE
dans leur ebuild. La commande emerge --search
nomdupaquet vous permet de voir cette licence.
Par défaut, Portage autorise toutes les licencees, sauf les Contrats de Licence Utilisateur Final (CLUF) ou
End User Licence Agreement (EULA) en anglais, qui réclament une lecture et la signature d'un accord.
La variable qui définit les licences acceptées est ACCEPT_LICENSE, dont on peut fixer la valeur dans
/etc/portage/make.conf:
Exemple de code 4.1 : ACCEPT_LICENSE par défaut dans /etc/portage/make.conf |
ACCEPT_LICENSE="* -@EULA"
|
Avec cette configuration, les paquets qui requièrent une
interaction pendant l'installation pour que leur CLUF soit approuvé ne seront pas installés.
Les paquets sans CLUF seront installés.
Vous pouvez définir ACCEPT_LICENSE globalllement dans /etc/portage/make.conf,
ou vous pouvez la définir paquet par paquet dans le fichier /etc/portage/package.license.
Par exemple, si vous voulez autoriser la licence truecrypt-2.7 pour
app-crypt/truecrypt, ajoutez ce qui suit à /etc/portage/package.license:
Exemple de code 4.2 : Autorisation d'une licence pour truecrypt dans package.license |
app-crypt/truecrypt truecrypt-2.7
|
Ceci autorise l'installation de versions de truecrypt qui relèvent de la licence
truecrypt-2.7 , mais pas de versions qui relèvent de la licence truecrypt-2.8.
Important :
les licences sont stockées dans /usr/portage/licenses, et les groupes de licences dans
/usr/portage/profiles/license_groups. La première entrée de chaque ligne en CAPITALES est
le nom du groupe de licences, et chacune des entrées qui suit est une licence individuelle.
|
Les groupes de licences définis dans ACCEPT_LICENSE sont préfixés par un signe @.
Voici un exemple de système qui autorise globalement les licences compatibles GPL
ainsi que d'autres groupes et licences individuelles.
Exemple de code 4.3 : Exemple de variable ACCEPT_LICENSE dans /etc/portage/make.conf |
ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"
|
Si vous ne voulez autoriser que des logiciels et des documentations libres dans votre système,
utilisez la variable suivante :
Exemple de code 4.4 : Use only free licenses |
ACCEPT_LICENSE="-* @FREE"
|
Dans cet exemple, le mot "free" fait référence à la définition donnée par la FSF et par l'OSI. Tout paquet dont la licence ne respecte pas
les exigences qui y sont mentionnées ne sera pas installé.
1.e. Quand Portage se plaint...
À propos des « SLOTs », paquets virtuels, branches,
architectures et profils
Comme nous l'avons déjà dit, Portage est très puissant et offre de nombreuses
fonctionnalités que d'autres gestionnaires de logiciels n'ont pas. Survolons les
différents aspects de Portage.
Portage permet à plusieurs versions d'un même paquet de cohabiter sur le même
système. D'autres distributions ont tendance à renommer les paquets en fonction
de la version (par exemple freetype et freetype2) alors que
Portage utilise des « SLOTs ». Un ebuild peut placer chaque version du
logiciel dans un slot et des versions qui sont dans des slots différents peuvent
être installées en même temps. Par exemple, le paquet freetype a des
versions avec SLOT="1" et SLOT="2".
Dans certains cas, différents paquets installent la même fonctionnalité. Par
exemple, metalogd, sysklogd et syslog-ng gèrent tous le
jounal du système, mais un logiciel qui dépendrait du journal système ne peut
pas dépendre directement de metalogd ou d'un autre. Le système doit aussi
fonctionner si l'utilisateur a choisi un autre gestionnaire de journal. Portage
permet de définir des paquets virtuels. Les trois paquets cités ci-dessus
fournissent la fonctionnalité virtual/syslog et les paquets qui ont
besoin d'un journal système dépendent de celle-ci.
Portage classe les paquets dans plusieurs branches. Par défaut, votre système
n'accepte que les paquets que Gentoo considère stables. Bien souvent, quand une
nouvelle version d'un logiciel sort, elle est d'abord ajoutée à la branche dite
« instable », ce qui signifie que plus de tests sont nécessaires avant
de considérer le logiciel comme stable. Vous verrez les paquets dits instables
dans votre arbre, mais Portage ne les installera pas automatiquement avant
qu'ils ne soient stabilisés.
Certains logiciels ne sont disponibles que pour certaines architectures ou ne
fonctionnent pas du tout sur d'autres. Parfois, un logiciel a besoin de plus de
tests sur une architecture donnée ou les développeurs responsables d'un paquet
n'ont pas la possibilité de le valider pour d'autres processeurs.
Chaque installation de Gentoo se conforme à un profil qui contient la
liste des paquets qui forment un système cohérent et fonctionnel.
Paquets bloqués
Exemple de code 5.1 : Avertissement à propos d'un paquet bloquant (avec --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Exemple de code 5.2 : Avertissement à propos d'un paquet bloquant (sans --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Les ebuilds contiennent des informations relatives aux dépendances des logiciels
entre eux. Il y a deux sortes de dépendances : les dépendances à
l'installation définies par DEPEND et les dépendances à l'utilisation
définies dans RDEPEND. Un blocage peut se produire quand un paquet est
considéré incompatible avec une dépendance.
Bien que les versions récentes de Portage viennent à bout d'incompatibilités
mineures sans intervention de l'utilisateur, il arrive que vous deviez régler le
problème vous-même comme nous l'expliquons tout de suite.
Pour résoudre un tel blocage, vous pouvez soit ne pas installer le logiciel dont
l'installation était envisagée, soit désinstaller le paquet qui bloque. Dans l'exemple ci-dessus, vous
auriez le choix entre ne pas installer postfix ou d'abord désinstaller
ssmtp.
Un blocage peut être provoqué par une version spécifique d'un logiciel, par
exemple : <media-video/mplayer-bin-1.0_rc1-r2. Dans ce cas, il
suffit de mettre à jour le logiciel en question vers une version plus récente
pour supprimer le blocage.
Il se peut que deux paquets qui ne sont pas encore installés se bloquent entre
eux. Dans ce rare cas, vous devez trouver pourquoi les deux paquets veulent
s'installer car normalement un seul suffit. Si le problème persiste, veuillez
remplir un rapport de bogue sur notre système de gestion de bogues.
Les paquets masqués
Exemple de code 5.3 : Avertissement à propos de paquets masqués |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Exemple de code 5.4 : Avertissement à propos de paquets masqués avec la raison |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))
|
Quand vous essayez d'installer un paquet qui n'est pas disponible pour votre
système, vous recevez ce type d'erreur. Vous devriez essayer d'installer une
autre application qui est disponible pour votre environnement ou attendre que le
paquet devienne disponible. Un paquet est toujours masqué pour une bonne
raison :
-
~arch keyword indique que le paquet n'a pas été suffisamment testé et
n'est pas encore dans la branche stable. Vous devriez essayer à nouveau
quelques jours ou quelques semaines plus tard.
-
-arch keyword ou -* keyword indique que l'application ne
fonctionne pas sur votre architecture. Si vous pensez le contraire, veuillez
le signaler via bugzilla.
-
missing keyword indique que l'application n'a pas été testée sur
votre architecture. Vous pouvez demander à l'équipe en charge de celle-ci de
tester l'application qui vous intéresse ou la tester vous-même et soumettre
vos résultats sur bugzilla.
-
package.mask indique que le paquet est cassé, instable, voire pire et
qu'il a été masqué pour que vous ne l'utilisiez pas.
-
profile indique que le paquet n'est pas compatible avec votre profil.
L'application pourrait abimer votre système.
-
license signifie que la licence du paquet n'est pas autorisée par la variable
ACCEPT_LICENSE. Vous devez l'autoriser explicitement (individuellement ou dans un groupe) dans
/etc/portage/make.conf ou dans /etc/portage/package.license. Reportez-vous à Licences pour obtenir l'information nécessaire.
Changements demandés de la variable USE
Exemple de code 5.5 : Portage demande des changements de la variable USE |
The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test
|
Ce message d'erreur peut aussi apparaître comme ce qui suit si la variable --autounmask
n'est pas définie :
Exemple de code 5.6 : Erreur annoncée par Portage à propos de la variable USE |
emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])
|
Un tel avertissement ou erreur apparaît lorsque vous voulez
installer un paquet qui, non seulement dépend d'un autre paquet,
mais nécessite aussi que ce paquet soit compilé avec une option (ou un jeu d'options) bien particulière dans la
variable USE. Dans l'exemple cité, le paquet app-text/feelings requiert d'être compilé avec
USE="test", mais cette option n'est pas déclarée dans USE.
Pour résoudre ce problème, vous pouvez, ajouter l'option requise à la variable USE, soit globalement dans
/etc/portage/make.conf, soit spécifiquement pour le paquet dans
/etc/portage/package.use.
Dépendances manquantes
Exemple de code 5.7 : Avertissement à propos de dépendances manquantes |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
L'application que vous essayez d'installer dépend d'autres paquets qui ne sont
pas disponibles pour votre système. Veuillez vérifier sur bugzilla si le problème est déjà connu et
veuillez le signaler dans le cas contraire. À moins que vous ne mélangiez les
branches stables et instables, cela de doit pas arriver et peut être considéré
comme un bogue.
Noms d'ebuilds ambigus
Exemple de code 5.8 : Avertissement à propos de noms d'ebuilds ambigus |
[ Results for search key : listen ]
[ Applications found : 2 ]
* dev-tinyos/listen [ Masked ]
Latest version available: 1.1.15
Latest version installed: [ Not Installed ]
Size of files: 10,032 kB
Homepage: http://www.tinyos.net/
Description: Raw listen for TinyOS
License: BSD
* media-sound/listen [ Masked ]
Latest version available: 0.6.3
Latest version installed: [ Not Installed ]
Size of files: 859 kB
Homepage: http://www.listen-project.org
Description: A Music player and management for GNOME
License: GPL-2
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.
|
Le paquet que vous essayez d'installer a un nom qui désigne plusieurs paquets
dans des catégories différentes. Vous devez mentionner la catégorie du paquet
que vous voulez installer. Portage affiche les différentes possibilités.
Dépendances circulaires
Exemple de code 5.9 : Avertissement à propos de dépendances circulaires |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Deux (ou plus) paquets dépendent l'un de l'autre et ne peuvent pas être
installés. Il est très probable que cela soit un bogue. Veuillez synchroniser
votre arbre Portage. Si le problème persiste, veuillez vérifier si le problème
est connu dans bugzilla et le signaler
dans le cas contraire.
Problèmes lors du téléchargement
Exemple de code 5.10 : Avertissement à propos d'un problème au téléchargement |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage n'a pas pu télécharger les sources de l'application et essaie
éventuellement d'installer les autres paquets que vous auriez spécifiés avec la
commande emerge. Ce problème peut être dû à un miroir qui n'est pas encore
synchronisé ou à un ebuild qui référence un serveur de sources incorrect. Il se
peut aussi que le serveur soit momentanément indisponible.
Veuillez réessayer après quelques heures.
Protection des paquets du profil système
Exemple de code 5.11 : Avertissement à propos du profil système |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Vous avez demandé à Portage de supprimer un paquet qui fait partie du profil
système. Le supprimer pourrait rendre votre système inutilisable.
Échecs à la vérification des sommes de contrôle (Digest)
Parfois, quand vous essayez d'installer un paquet, cela échoue avec le
message :
Exemple de code 5.12 : Digest verification failure |
>>> checking ebuild checksums
!!! Digest verification failed:
|
Ceci est le signe d'une erreur dans l'arbre de Portage et souvent il se peut
qu'un développeur ait fait une erreur lors de l'envoi d'une mise à jour d'un
paquet dans l'arbre.
Quand la vérification de la somme de contrôle échoue, n'essayez pas de
régénérer le fichier Digest vous-même. Exécuter ebuild toto manifest ne
réglera pas le problème, au contraire !
Attendez plutôt une heure ou deux que l'arbre soit corrigé. Il est probable que
l'erreur ait été déjà signalée, mais cela peut prendre un petit moment pour la
correction et la propagation dans l'arbre de Portage. Vous pouvez, pendant ce
temps, vérifier dans Bugzilla si
quelqu'un a déjà signalé le problème. Si ça n'est pas le cas, envoyez un rapport
de bogue pour un paquet cassé.
Dès que vous voyez que le bogue est corrigé, vous pouvez mettre à jour votre
arbre de Portage pour récupérer le fichier Digest corrigé.
Important :
Cela ne signifie pas que vous pouvez multiplier les mises à jour de votre
arbre de Portage ! Comme expliqué dans les règles d'usage de rsync (quand
vous exécutez emerge --sync), les utilisateurs qui synchronisent trop
souvent seront bannis ! Le plus sage est d'attendre votre prochaine mise à
jour d'arbre de Portage comme vous l'aviez prévu, de cette manière vous ne
surchargerez pas les serveurs rsync.
|
2. La variable USE
2.a. Que sont les paramètres USE ?
Les notions sous-jacentes aux paramètres USE
Losque vous installez Gentoo (ou n'importe quelle autre distribution, voire
système d'exploitation), vous faites des choix qui dépendent de l'environnement
dans lequel vous travaillez. La configuration d'un serveur est différente de
celle d'une station de travail. Une machine destinée aux jeux diffère d'une
station de travail pour du rendu 3D.
Cela s'applique non seulement au choix des paquets que vous comptez installer,
mais aussi aux fonctionnalités que chaque paquet devrait supporter. Si vous
n'avez pas besoin d'OpenGL, pourquoi prendre la peine d'installer OpenGL et de
construire la plupart de vos paquets avec support pour OpenGL ? Si vous ne
souhaitez pas utiliser KDE, pourquoi compiler des paquets avec le support KDE
alors qu'ils fonctionneraient parfaitement sans ce support ?
Pour aider les utilisateurs à déterminer ce qu'ils veulent installer ou
activer, nous souhaitions que l'utilisateur spécifie son environnement de
manière simple. Il est ainsi obligé de décider ce qu'il veut vraiment, et cela
facilite la tâche de Portage, notre gestionnaire de paquets, pour prendre les
décisions utiles.
Définition des paramètres USE
C'est ici qu'interviennent les paramètres USE. Un tel paramètre est un mot-clé
qui définit le support et les dépendances pour un concept donné. Si vous
définissez un paramètre USE donné, Portage saura que vous voulez avoir le
support correspondant au mot-clé choisi. Bien entendu, cela affecte aussi les
dépendances des paquets.
Considérons un exemple spécifique : le mot-clé kde. Si vous n'avez
pas ce mot-clé dans votre variable USE, tous les paquets qui offrent un
support optionnel pour KDE seront compilés sans ce support. Tous
les paquets qui possèdent des dépendances KDE optionnelles seront
installés sans installer les bibliothèques KDE (en tant que
dépendances). Si vous avez le mot-clé kde, alors ces paquets seront
compilés avec le support KDE et les bibliothèques KDE seront installées
en tant que dépendances.
Définir correctement ces mots-clés vous donnera finalement un système adapté
spécifiquement à vos besoins.
Quels sont les paramètres USE disponibles ?
On distingue deux types de paramètres USE : les paramètres globaux
et les paramètres locaux.
-
Un paramètre USE global est utilisé par plusieurs paquets dans
l'ensemble du système. C'est ce que la plupart des gens considèrent comme
les paramètres USE.
-
Un paramètre USE local n'est utilisé que par un seul paquet et n'est
utilisé que pour des décisions spécifiques à ce paquet.
Une liste des paramètres USE peut être trouvée en ligne ou localement dans
/usr/portage/profiles/use.desc.
La liste des paramètres USE locaux se trouve dans le fichier
/usr/portage/profiles/use.local.desc.
2.b. Utiliser les paramètres USE
Déclarer des paramètres USE permanents
Nous allons maintenant vous expliquer comment déclarer des paramètres USE, en
espérant que vous soyez convaincu de leur importance.
Comme mentionné plus haut, tous les paramètres USE sont déclarés dans la
variable USE. Pour permettre aux utilisateurs de trouver et choisir
facilement les paramètres USE, nous fournissons une configuration par
défaut de USE. Cette configuration est un ensemble de paramètres USE dont
nous pensons qu'ils sont communément employés par les utilisateurs de Gentoo.
Cette configuration par défaut est déclarée dans les fichiers
make.defaults de votre profil.
Le profil de votre système est défini par le fichier vers lequel pointe le lien
symbolique /etc/make.profile. Différents profils s'empilent les
uns sur les autres. Le profil le plus haut est base
(/usr/portage/profiles/base).
Voyons les valeurs par défaut d'un profil 13.0 :
Exemple de code 2.1 : Variable USE après cumul d'un profil 13.0 |
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"
|
Comme vous pouvez le voir, cette variable contient déjà un bon nombre de
mots-clés. Ne modifiez en aucun cas les fichiers
make.defaults pour adapter la variable USE à vos
besoins : les changements effectués dans ce fichier seront effacés lorsque
vous mettrez Portage à jour !
Pour modifier cette configuration par défaut, vous devrez ajouter ou enlever
des mots-clés dans la variable USE. Cela est fait de manière globale en
définissant la variable USE dans /etc/portage/make.conf. Dans cette
variable, vous ajouterez les paramètres USE que vous désirez et enlèverez ceux
que vous ne voulez pas. Cette dernière action est réalisée en préfixant le
mot-clé d'un signe moins ("-").
Par exemple, pour enlever le support pour KDE et QT, et ajouter le support pour
ldap, vous pourriez définir USE comme suit dans
/etc/portage/make.conf :
Exemple de code 2.2 : Exemple de configuration USE dans /etc/make.conf |
USE="-kde -qt3 -qt4 ldap"
|
Déclarer des paramètres USE spécifiques à des paquets
Parfois, vous voudrez déclarer certains paramètres USE pour une ou plusieurs
applications particulières mais pas pour l'ensemble du système. Pour cela, vous
devez créer le répertoire /etc/portage (s'il n'existe pas déjà) et
éditer /etc/portage/package.use. Ce n'est souvent qu'un simple fichier,
mais il peut aussi être un répertoire ; lisez man portage pour plus
d'informations. Les exemples suivants supposent que package.use est
un simple fichier.
Par exemple, si vous ne voulez pas du support global berkdb mais si vous
le voulez tout de même pour mysql, vous devrez y ajouter la ligne
suivante :
Exemple de code 2.3 : Exemple de /etc/portage/package.use |
dev-db/mysql berkdb
|
Vous pouvez également désactiver explicitement un paramètre USE pour une
application particulière. Par exemple, si vous ne voulez pas du support
java dans PHP :
Exemple de code 2.4 : Second exemple de /etc/portage/package.use |
dev-php/php -java
|
Déclarer des paramètres USE temporaires
Il peut arriver que vous ne souhaitiez définir un paramètre USE donné qu'en une
seule occasion. Plutôt qu'éditer /etc/portage/make.conf deux fois (pour
faire puis défaire les changements), vous pouvez simplement déclarer USE comme
une variable d'environnement. Gardez toutefois à l'esprit que cette
modification de l'environnement sera probablement perdue lorsque vous
réinstallerez ou mettrez à jour cette application (soit explicitement, soit
lors d'une mise à jour du système).
Par exemple, nous allons retirer temporairement le support java de notre
configuration USE pendant l'installation de seamonkey.
Exemple de code 2.5 : Utilisation de USE comme une variable d'environnement |
# USE="-java" emerge seamonkey
|
Ordre de priorité
Les différentes configurations de USE se conforment évidemment à un certain
ordre de priorité. Vous ne souhaitez sans doute pas déclarer USE="-java"
pour vous rendre compte après coup que java est déclaré malgré tout à
cause d'une valeur par défaut qui a priorité sur votre définition. Les
priorités dans les déclarations USE sont ordonnées comme suit (la première
déclaration a la plus faible priorité) :
-
Déclaration par défaut dans les fichiers make.defaults de
votre profil ;
-
Déclaration par l'utilisateur dans /etc/portage/make.conf ;
-
Déclaration par l'utilisateur dans
/etc/portage/package.use ;
-
Déclaration par l'utilisateur comme une variable d'environnement ;
Pour voir la configuration finale de USE telle qu'elle est vue par
Portage, exécutez emerge --info. Cela listera toutes les variables
significatives (dont la variable USE) avec leur contenu tel qu'il est vu
par Portage.
Exemple de code 2.6 : Exécuter emerge --info |
# emerge --info
|
Reconfigurer votre système pour tenir compte d'une mise à jour des options USE
Si vous avez modifié vos options de la variable USE et que vous voulez
reconfigurer votre système pour tenir compte de ces nouvelles options, utilisez
l'option --newuse d'emerge:
Exemple de code 2.7 : Recompiler tout le système |
# emerge --update --deep --newuse world
|
Ensuite, utilisez l'option depclean pour supprimer les dépendances
conditionnelles qui ont été rendues obsolètes par les nouvelles options de USE.
Attention :
Exécuter emerge --depclean est une opération risquée qui ne devrait pas
être lancée à la légère. Vérifiez bien que la liste des paquets qui vont être
supprimés ne contient pas de paquet dont vous avez encore besoin. Dans
l'exemple ci-dessous, nous utilisons l'option -p pour afficher la liste
sans rien supprimer.
|
Exemple de code 2.8 : Supprimer les paquets inutiles |
# emerge -p --depclean
|
Quand cette opération est terminée, lancez revdep-rebuild pour
recompiler les applications qui avaient été liées dynamiquement avec les
paquets que vous venez de supprimer. La commande revdep-rebuild fait
partie du paquet gentoolkit ; n'oubliez pas de l'installer.
Exemple de code 2.9 : Exécuter revdep-rebuild |
# revdep-rebuild
|
Une fois tout ceci accompli, le système tient compte des nouvelles options de USE.
2.c. Paramètres USE spécifiques à un paquet
Savoir quels paramètres USE influencent un paquet
Prenons l'exemple de seamonkey : à quels paramètres USE est-il
sensible ? Pour le savoir, nous utilisons emerge avec les options
--pretend et --verbose :
Exemple de code 3.1 : Afficher les paramètres USE qui influencent un paquet |
# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge n'est pas le seul outil utilisable à cette fin. En effet, nous
disposons d'un outil dédié pour obtenir des informations sur les paquets. Il
s'appelle equery et appartient au paquet gentoolkit. Commencez
par installer gentoolkit :
Exemple de code 3.2 : Installer gentoolkit |
# emerge gentoolkit
|
Exécutez maintenant equery avec l'argument uses pour afficher les
paramètres USE d'un paquet donné. Par exemple, pour le paquet
gnumeric :
Exemple de code 3.3 : Utiliser equery pour afficher les paramètres USE |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output.
If you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
3. Portage et ses fonctionnalités
3.a. Les caractéristiques de Portage
Portage offre un ensemble de fonctionnalités qui vous aident à mieux utiliser
Gentoo. Certaines fonctionnalités sont basées sur des outils tiers qui
permettent d'améliorer les performances, la fiabilité, la sécurité, etc.
Pour activer ou désactiver certaines fonctionnalités, vous devez modifier la
variable FEATURES dans le fichier /etc/portage/make.conf. Séparez
les mots-clefs par des espaces. Souvent, vous devrez aussi installer l'outil
requis pour utiliser la fonctionnalité souhaitée.
Toutes les fonctionnalités disponibles ne sont pas reprises ici. Veuillez lire
la page man de make.conf pour en savoir plus.
Exemple de code 1.1 : Lire la page man de make.conf |
$ man make.conf
|
Pour connaitre les fonctionnalités qui sont actives sur votre système, utilisez
la commande emerge --info et regardez le contenu de la variable
« FEATURES ».
Exemple de code 1.2 : Afficher les fonctionnalités actives |
$ emerge --info | grep FEATURES
|
3.b. Compilation distribuée
Utiliser distcc
distcc est un programme qui permet de distribuer des compilations sur
plusieurs machines, pas nécessairement identiques, d'un réseau. Le client
distcc envoie toutes les données nécessaires aux serveurs distcc (qui
exécutent distccd) disponibles afin qu'ils puissent compiler des parties
du code source au profit du client. Le résultat est une compilation plus
rapide.
Vous trouverez une description plus élaborée de distcc (et des
informations sur la manière de le faire fonctionner avec Gentoo) dans notre
Documentation Gentoo pour distcc.
Installation de distcc
Distcc est fourni avec une interface graphique qui permet de suivre les tâches
de compilation que votre ordinateur envoie. Si vous utilisez Gnome, ajoutez
« gnome » à votre variable USE. Mais si vous n'utilisez pas
Gnome et souhaitez tout de même avoir une interface graphique, vous pouvez
ajouter « gtk » à votre variable USE.
Exemple de code 2.1 : Installer distcc |
# emerge distcc
|
Activer le support distcc pour Portage
Ajoutez le mot-clé distcc à la variable FEATURES du fichier
/etc/portage/make.conf. Ensuite, modifiez la variable MAKEOPTS
pour y ajouter -jX où X est le nombre de processeurs qui
exécutent distccd (l'hôte actuel inclus) plus un. Cette valeur
donne en général les meilleurs résultats, mais vous pouvez en essayer d'autres.
Ensuite, exécutez distcc-config et entrez la liste des serveurs distcc
disponibles. Pour donner un exemple simple, nous supposerons que les serveurs
distcc disponibles sont 192.168.1.102 (l'hôte actuel),
192.168.1.103 et 192.168.1.104 (deux hôtes
« distants ») :
Exemple de code 2.2 : Configurer distcc pour qu'il utilise trois serveurs distcc |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Bien entendu, n'oubliez pas de lancer le démon distccd :
Exemple de code 2.3 : Lancer le démon distccd |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. Utiliser un cache pour la compilation
À propos de ccache
ccache est un cache rapide pour compilateur. Lorsque vous compilez un
programme, il mettra les résultats intermédiaires en cache afin que,
s'il vous arrive de recompiler le même programme, le temps de compilation soit
largement réduit. Cepedant, la première fois que vous compilerez avec le cache, ce sera plus lent
qu'une compilation normale. Les compilations ultérieures seront quant à elles beaucoup plus
rapdes. ccache n'est utile si vous devez recompiler la même applications de nombreuses fois; par
conséquent cette fonctionnalité s'adresse surtout aux développeurs.
Si vous êtes intéressé par les tenants et aboutissants de ccache, veuillez
visiter le site de ccache.
Attention :
ccache est connu comme engendrant de nombreuses erreurs de compilation. Dans certains
cas il retient des morceaux de code périmés ou corrompus qui peuvent rendre les paquets non compilables.
Dans une telle situation (si vous avez des messages d'erreurs tels que "File not
recognized: File truncated"), essayez de recompiler l'application en désactivant (FEATURES="-ccache" dans /etc/portage/make.conf)
avant de rapporter un bogue. Sauf si vous êtes développeur n'activez pas ccache.
|
Installation de ccache
Utilisez la commande emerge ccache pour installer ccache :
Exemple de code 3.1 : Installer ccache |
# emerge ccache
|
Activer le support ccache pour Portage
Ajoutez le mot-clé ccache à la variable FEATURES du fichier
/etc/portage/make.conf. Ensuite, ajoutez la variable CCACHE_SIZE
qui définit la taille par défaut du cache utilisé par ccache. Une valeur de
2 Go est recommandée.
Exemple de code 3.2 : Editer CCACHE_SIZE dans /etc/portage/make.conf |
CCACHE_SIZE="2G"
|
Pour vérifier que ccache fonctionne, vous pouvez exécuter ccache
-s pour afficher les statistiques de ccache. Puisque Portage utilise
un répertoire différent du répertoire par défaut, vous devez définir la
variable CCACHE_DIR :
Exemple de code 3.3 : Afficher les statistiques de ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
Le répertoire /var/tmp/ccache est utilisé par Portage par défaut.
Vous pouvez spécifier le répertoire de votre choix en définissant la variable
CCACHE_DIR dans le fichier /etc/portage/make.conf.
Cependant, quand vous exécutez ccache, pour voir les statistiques par
exemple, le répertoire par défaut est ${HOME}/.ccache, ce qui
explique pourquoi vous devez définir la variable CCACHE_DIR pour voir
les statistiques ccache de Portage.
Utilisation de ccache en dehors de Portage
Si vous souhaitez utiliser ccache pour les compilations en dehors de celles de
Portage, vous pouvez ajouter /usr/lib/ccache/bin au début de votre
variable PATH (ou tout au moins avant /usr/bin). Pour cela,
éditez le fichier .bash_profile qui se trouve à la racine de
votre compte utilisateur. Utiliser .bash_profile est une des
manières de définir la variable PATH :
Exemple de code 3.4 : Modifier le fichier .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. Paquets binaires
Créer des paquets binaires
Nous avons déjà parlé de l'utilisation de paquets précompilés, mais comment
crée-t-on son propre paquet précompilé ?
Si le paquet est déjà installé, vous pouvez utiliser la commande
quickpkg. Si ce n'est pas le cas, utilisez les options
--buildpkg ou --buildpkgonly avec la commande emerge. La
deuxième option prépare un paquet binaire sans l'installer sur votre machine.
Si vous souhaitez que Portage construise par défaut des paquets binaires pour
tous les paquets que vous installez sur votre système, vous pouvez mettre le
mot-clé builpkg dans la variable FEATURES dans le fichier
/etc/portage/make.conf.
Vous trouverez plus de détails à propos de la création de paquets binaires dans
la documentation de catalyst (en anglais) : Catalyst FAQ.
Installer des paquets précompilés
Bien que Gentoo ne fournisse pas de système centralisé de distribution de
paquets binaires, rien ne vous empêche d'en créer un. Vous pourriez très bien
stocker tous vos paquets binaires sur un serveur et utiliser celui-ci pour
mettre plusieurs machines à jour. Pour utiliser un tel serveur, vous devez le
définir dans la variable PORTAGE_BINHOST. Si vous avez stocké vos
paquets sur un serveur ftp ftp://buildhost/gentoo, utilisez :
Exemple de code 4.1 : Définir PORTAGE_BINHOST dans /etc/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Quand vous voulez utliser un paquet binaire pour installer une application,
spécifiez l'option --getbinpkg en plus de --usepkg avec la
commande emerge. La première option indique à Portage de télécharger
le paquet binaire depuis le serveur que vous avez défini plus tôt et la
seconde indique d'utiliser le même paquet binaire plutôt que de compiler
l'application.
Par exemple, pour installer gnumeric à partir de paquets binaires
précompilés :
Exemple de code 4.2 : Installer gnumeric en utilisant un paquet précompilé |
# emerge --usepkg --getbinpkg gnumeric
|
La page man de emerge décrit l'utilisation des paquets précompilés plus
en détail.
Exemple de code 4.3 : Lire la page man de emerge |
$ man emerge
|
3.e. Récupération des fichiers
Récupération en parallèle
Quand vous installez une série de paquets, Portage peut commencer la
récupération des sources du paquet suivant dans la liste pendant qu'il en
compile un autre, réduisant ainsi la durée de l'installation.
Pour activer cette option, ajoutez « parallel-fetch » à la variable
FEATURES.
Userfetch : récupération en tant qu'utilisateur normal
Quand Portage est lancé par le super-utilisateur, l'option
FEATURES="userfetch" autorise Portage à abandonnerles privilèges du
super-utilisateur pendant qu'il récupère les sources du paquet. Ceci est une
légère amélioration en termes de sécurité.
3.f. Extraction d'instantanés validés de l'arbre Portage
En tant qu'administrateur, vous pouvez décider de ne mettre à jour votre arbre Portage
qu'à partir des instantanés cryptés de l'arbre Portage validés par Gentoo.org.
Ceci permet de garantir qu'un mirroir rsync malhonnête n'a pas ajouté de code ou de paquet indésirable
dans l'arbre que vous téléchargez.
Pour configurer Portage, commencez par créer un dépôt de confiance
duquel vous téléchargez et acceptez les clés de Gentoo.org servant à signer les instantanés.
Bien-sûr, si vous le souhaitez, vous pouvez valider ces clés GPG en suivant les conseils de la page
utiliser GnuPg sous Gentoo
(comme celui de vérifier l'empreinte de la clé). La liste des clés GPG utilisées par
la Release Engineering team est disponible sur leur page de projet Release engineering.
Exemple de code 6.1 : Créer un dépôt de confiance pour Portage |
# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust
|
Ensuite, éditez /etc/portage/make.conf et activez la prise en charge des instantanés cryptés et validés
(avec FEATURES="webrsync-gpg") et
en désactivant la mise à jour normale de l'arbre portage par emerge --sync.
Exemple de code 6.2 : Updating Portage for signed tree validation |
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""
|
Voilà ! La prochaine fois que vous lancerez emerge-webrsync, seuls les instantanés dûment signés seront déployés
sur votre système.
4. Les scripts d'initialisation
4.a. Les niveaux d'exécution
Démarrer votre système
Quand vous démarrez votre système, vous voyez beaucoup de texte défiler à
l'écran. Vous remarquerez sans doute que ce texte est le même à chaque
démarrage. La séquence d'actions qui se déroule devant vos yeux s'appelle la
séquence de démarrage et elle est définie de façon plus ou moins
statique.
D'abord, votre chargeur de démarrage charge en ménoire l'image du noyau que vous avez
définie dans son fichier de configuration. Ensuite, il demande au processeur d'exécuter ce noyau. Ce
dernier initialise alors ses propres structures et tâches puis lance le
processus d'initialisation (init).
Ce processus monte les systèmes de fichiers définis dans
/etc/fstab et exécute quelques scripts placés dans le répertoire
/etc/init.d qui, à leur tour, démarrent les services nécessaires
au bon fonctionnement du système.
Finalement, quand tous les scripts ont été exécutés, init active les
terminaux (en général, les consoles virtuelles que vous obtenez avec les
touches Alt-F1, Alt-F2, etc.) et attache un processus appelé
agetty à chacun. Ce processus vous permet de vous identifier sur ces
terminaux avec login.
Les scripts d'initialisation
En fait, init n'exécute pas les scripts du répertoire
/etc/init.d dans n'importe quel ordre. De plus, il n'exécute pas non plus
tous les scripts, mais seulement ceux qui doivent l'être. Les scripts à
exécuter sont définis dans /etc/runlevels.
Le processus init exécute d'abord les scripts de
/etc/init.d vers lesquels un lien symbolique existe dans
/etc/runlevels/boot. Les scripts sont généralement exécutés par
ordre alphabétique, mais certains contiennent des dépendances qui indiquent
que d'autres scripts doivent être exécutés avant eux.
Quand tous les scripts liés dans /etc/runlevels/boot ont été
exécutés, init poursuit avec ceux vers lesquels un lien symbolique existe dans
/etc/runlevels/default. Ici aussi, les scripts sont généralement
exécutés par ordre alphabétique, sauf quand ils contiennent des informations
sur des dépendances qui spécifient une séquence d'exécution particulière.
Comment init fonctionne-t-il ?
Évidemment, init ne décide pas tout seul de ce qu'il doit faire. Il a
besoin d'un fichier de configuration qui lui indique quelles actions il doit
effectuer. Ce fichier est /etc/inittab.
Dans la séquence de démarrage que nous venons d'expliquer, nous avons dit que
la première action de init était de monter les systèmes de fichiers. La
ligne du fichier /etc/inittab qui provoque cela est la
suivante :
Exemple de code 1.1 : La ligne d'initialisation du système dans /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
En fait, cette ligne indique à init qu'il doit exécuter /sbin/rc
sysinit pour initialiser le système. C'est le script /sbin/rc
qui fait vraiment le travail d'initialisation et pas init qui ne fait
que déléguer les tâches.
Ensuite, init exécute tous les scripts vers lesquels un lien symbolique
est défini dans /etc/runlevels/boot. La ligne suivante provoque
cela :
Exemple de code 1.2 : L'initialisation du système, suite |
rc::bootwait:/sbin/rc boot
|
Encore une fois, le script rc fait le travail. Remarquez que l'option
boot passée au script rc correspond au nom du sous-répertoire qui
se trouve dans /etc/runlevels.
Ensuite, init lit son fichier de configuration pour savoir quel
runlevel (voir cette notion plus-bas) il doit exécuter .
La ligne suivante définit le niveau d'exécution :
Exemple de code 1.3 : La ligne initdefault |
id:3:initdefault:
|
Dans ce cas (qui est celui de la majorité des utilisateurs de Gentoo), le
niveau d'exécution est le numéro 3. Avec ce numéro, init trouve ce qu'il
doit exécuter pour lancer le niveau d'exécution 3 :
Exemple de code 1.4 : Les définitions des niveaux d'exécution |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
La ligne qui définit le niveau 3 utilise à nouveau le script rc pour
démarrer les services, cette fois avec le paramètre default. Remarquez
que, encore une fois, le paramètre correspond au nom du sous-répertoire dans
/etc/runlevels.
Quand le script rc a terminé, init trouve la liste des consoles
virtuelles à activer et quelles commandes il doit utiliser dans son fichier de
configuration :
Exemple de code 1.5 : La définition des consoles virtuelles |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
Qu'est-ce qu'un niveau d'exécution ?
Vous avez constaté qu'init numérote les niveaux d'exécution qu'il doit
activer. Un niveau d'exécution définit un état dans lequel votre système se
trouve et contient les scripts nécessaires pour entrer dans ou quitter cet
état.
Dans Gentoo, sept niveaux d'exécution sont définis : trois internes et
quatre définis par l'utilisateur. Les niveaux d'exécution internes sont
sysinit, shutdown et reboot et sont utilisés
respectivement pour initialiser, éteindre et redémarrer le système.
Les niveaux d'exécution définis par l'utilisateur sont ceux qui correspondent à
un sous-répertoire dans /etc/runlevels : boot,
default, nonetwork et single. Le niveau
d'exécution boot est utilisé pour démarrer tous les services
système utilisés par les autres niveaux d'exécution. Les autres niveaux
d'exécution se différencient par les services qu'ils activent :
default est utilisé en temps normal, nonetwork est
utilisé quand aucune connexion réseau n'est souhaitée et single
est utilisé pour résoudre d'éventuels problèmes du système.
Utiliser les scripts d'initialisation
Les scripts que rc exécute sont appelés des scripts
d'initialisation. Chaque script peut être exécuté avec les options
start, stop, restart, pause, zap,
status, ineed, iuse, needsme, usesme ou
broken.
Pour démarrer, arrêter ou relancer un service (et les autres services
nécessaires éventuels), utilisez start, stop et restart.
Exemple de code 1.6 : Démarrer postfix |
# /etc/init.d/postfix start
|
Note :
seuls les services qui ont besoin du service spécifié sont arrêtés ou
redémarrés. Les autres services dépendants (ceux qui l'utilisent mais n'en ont pas un besoin impérieux) ne sont pas affectés.
|
Pour stopper un service sans toucher aux services qui l'utilisent, utilisez
l'option pause :
Exemple de code 1.7 : Stopper postfix sans toucher aux services qui l'utilisent |
# /etc/init.d/postfix pause
|
Pour afficher le statut d'un service (démarré, arrêté, en pause), utilisez
l'option status :
Exemple de code 1.8 : Afficher le statut du service postfix |
# /etc/init.d/postfix status
|
Si le système affirme qu'un service est actif, mais que vous savez qu'il
ne l'est pas, utilisez l'option zap pour réinitialiser son statut à
« arrêté ».
Exemple de code 1.9 : Réinitialiser le statut de postfix |
# /etc/init.d/postfix zap
|
Vous pouvez aussi afficher les services dont un service a besoin avec les
options iuse ou ineed. Avec l'option ineed, les services
réellement nécessaires sont affichés. Avec iuse, ce sont les services
qui peuvent être utilisés sans être indispensables qui sont affichés.
Exemple de code 1.10 : Afficher la liste des services dont Postfix a besoin |
# /etc/init.d/postfix ineed
|
De la même façon, vous pouvez afficher la liste des services qui ont besoin
(needsme), ou qui peuvent simplement utiliser (usesme), un service particulier :
Exemple de code 1.11 : Afficher la liste des services qui ont besoin de Postfix |
# /etc/init.d/postfix needsme
|
Enfin, vous pouvez aussi demander la liste des services requis qui
manquent :
Exemple de code 1.12 : Afficher la liste des services manquants dont Postfix a besoin |
# /etc/init.d/postfix broken
|
4.b. Utiliser rc-update
Qu'est-ce que rc-update ?
Gentoo construit un arbre de dépendances pour déterminer l'ordre d'exécution
des services. Cela est loin d'être trivial et nous avons donc créé des outils
qui facilitent l'administration des niveaux d'exécution et des scripts
d'initialisation.
La commande rc-update permet d'ajouter ou d'enlever un script d'un
niveau d'exécution. Cette commande utilise automatiquement le script
depscan.sh qui reconstruit l'arbre des dépendances.
Ajouter et enlever des services
Vous avez déjà ajouté des scripts d'initialisation au niveau d'exécution
« default » pendant l'installation de Gentoo. Vous ignoriez alors la
signification de « default », mais maintenant, vous la connaissez. Le
script rc-update a besoin d'un second argument qui spécifie l'action à
effectuer : add, del ou show pour respectivement
ajouter, supprimer ou afficher.
Pour ajouter ou supprimer un service, ajoutez simplement add ou
del à la commande rc-update et spécifiez ensuite le nom du script
d'initialisation et le niveau d'exécution. Par exemple :
Exemple de code 2.1 : Supprimer Postfix du niveau d'exécution « default » |
# rc-update del postfix default
|
La commande rc-update -v show affiche la liste des scripts
d'initialisation disponibles et les niveaux d'exécution dans lesquels ils ont
été ajoutés :
Exemple de code 2.2 : Afficher la liste des scripts d'initialisation |
# rc-update -v show
|
Vous pouvez aussi lancer rc-update show (sans l'option -v) pour
simplement voir les scripts d'initialisation activés et leurs niveaux
d'exécution.
4.c. Configurer les services
Pourquoi encore configurer ?
Les scripts d'initialisation peuvent être complexes. Il vaut donc mieux éviter
que les utilisateurs n'aient à les modifier directement; cela évite bien des problèmes.
Cependant, les services ont parfois besoin d'être configurés ou de recevoir
certaines options.
Il importe donc de bien séparer les scripts de leur configuration car cela
permet de mettre à jour les scripts sans que leur configuration ne soit
perdue.
Le répertoire /etc/conf.d
Gentoo offre un système facile pour configurer les services. Chaque script
d'initialisation qui peut être configuré a un fichier de configuration dans le
répertoire /etc/conf.d. Par exemple, le script d'initialisation
d'apache2 (/etc/init.d/apache2) a un fichier de configuration
/etc/conf.d/apache2 qui contient les options à passer au serveur
Apache 2 quand ce dernier est lancé.
Exemple de code 3.1 : Variables définies dans /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP5"
|
Un tel fichier de configuration ne contient que des définitions de
variables (tout comme /etc/portage/make.conf), ce qui permet de configurer
facilement un service. Cela permet aussi de fournir des explications sur ces
options sous forme de commentaires.
4.d. Écrire un script d'initialisation
Dois-je faire cela ?
Non. Rédiger un script d'initialisation n'est généralement pas nécessaire
puisque Gentoo fournit des scripts complets pour tous les services supportés.
Cependant, si vous avez installé un service sans l'aide de Portage, vous devrez
sans doute écrire un tel script.
N'utilisez pas le script fourni avec le logiciel à moins qu'il ne soit écrit
spécifiquement pour Gentoo, car les scripts d'initialisation de Gentoo ne sont
pas compatibles avec ceux des autres distributions.
Structure
La structure de base d'un script d'initialisation est décrite ci-dessous.
Exemple de code 4.1 : Structure de base d'un script d'initialisation |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
|
La partie start() est indispensable, les autres sont
facultatives.
Dépendances
Il y a deux paramètres de dépendances que vous pouvez définir, et qui influencent l'ordre d'exécution des scripts d'initialisation : use and need.
À coté de ces paramètres, il y a aussi deux autres paramètres pour influencer cet ordre d'exécution :
before et after. Ces derniers ne créent pas de dépendance en eux-mêmes; il ne font pas échouer le script initial si le script mentionné n'est pas programmé pour démarrer ( où ne parvient pas à démarrer).
-
Le paramètre use informe le système que le script utilise (use-s)
la fonctionnalité offerte par le script mentionné, mais n'en dépend pas directement. Un bon exemple serait use logger or use dns. Si ces deux services sont disponibles, ils seront utilisés. Néanmoins, si aucun logger ou service DNS n'est disponible, le service continuera à fonctionner sans eux. Si ces services existent, ils seront démarrés avant le script qui les utilise ( use-s).
-
Le paramètre need implique une dépendance absolue. Il indique que le script
a besoin d' (need-s) un autre script et ne démarrera pas avant que cet autre
script ne soit exécuté avec succès. Ainsi, si cet autre script est redémarré, il en sera de même
pour le script requérant.
-
Un script qui utilise le paramètre before (avant) , est lancé avant le script
auquel ce before fait référence, si ce dernier fait partie du niveau d'exécution. Ainsi, par exemple, un script xdm qui fait usage de before alsasound démarre avant le script alsasound , mais seulement si alsasound fait également partie du même niveau d'éxécution. Si ce n'est pas le cas, ce paramètre n'a aucune influence et xdm est démarré quand le système d'initialisation le juge opportun.
-
De la même manière, un script qui utilise le paramètre after (après), est lancé après le script auquel ce after fait référence, si ce dernier fait partie du niveau d'exécution. Dans le cas contraire, ce paramètre n'a aucune influence et ce script est démarré quand le système d'initialisation le juge opportun.
D'après ce qui précède, seul le paramètre need implique une véritable dépendance, en ce sens
qu'il peut remettre en question, où pas, le démarrage du script. Les autres paramètres ne font qu'influer sur
l'ordre de démarrage des scripts.
Par ailleurs, si vous regardez attentivement beaucoup de scripts d'initialisation de Gentoo,
vous verrez que certains d'entre-eux indiquent des dépendances sur des choses qui ne sont pas des
scripts d'initialisation. Ces choses sont appelées services virtuels (virtuals).
Une dépendance d'un service virtuel (virtual) est une dépendance qui se rapporte, non pas à un sevice unique, mais à un service disponible parmi un groupe de services plus ou moins équvalents et interchangeables. Votre script d'initialisation peut très bien dépendre d'un système de journalisation, mais il existe plusieurs tels systèmes disponibles (metalogd, syslog-ng,
sysklogd, ...). Comme vous ne pouvez exprimer le besoin (need ) de chacun d'entre-eux (aucun système raisonnable ne possède tous ces systèmes de journalisation installés et opérationnels), nous faisons en sorte que ces services fournissent, solidairement, un service virtuel qui pourra être utilisé comme dépendance.
Jetons un coup d'œil aux dépendances du service postfix.
Exemple de code 4.2 : Dépendances de Postfix |
depend() {
need net
use logger dns
provide mta
}
|
Comme vous pouvez le voir, postfix :
-
a besoin du service virtuel net qui est fourni par
/etc/init.d/net.eth0, par exemple ;
-
utilise un système de journalisation (service virtuel logger) qui est
fourni par /etc/init.d/syslog-ng, par exemple ;
-
utilise le service (virtuel) dns qui est fourni par
/etc/init.d/named, par exemple ;
-
fournit le service virtuel mta qui indique qu'un serveur de courrier
est disponible.
Ordonner la séquence d'exécution
Comme expliqué précédemment, vous pouvez dire au système d'initialisation dans quel ordre démarrer
(ou arrêter) les scripts. Cet ordonnancement est assuré par l'utilisation des paramètres de dépendance
use et need, mais aussi par celle des paramètres d'ordonnancement before et after. Comme nous en avons déjà parlé, considérons maintenant un exemple de script d'initialisation, ici pour le service Portmap.
Exemple de code 4.3 : La fonction depend() du service Portmap |
depend() {
need net
before inetd
before xinetd
}
|
Vous pouvez aussi remplacer le nom de service par une étoile ("*") pour
spécifier tous les services d'un niveau d'exécution, mais cela n'est pas
recommandé.
Exemple de code 4.4 : Lancer un script avant tous les autres dans un niveau d'exécution |
depend() {
before *
}
|
Si votre service doit écrire sur des disques locaux, il aura besoin du
localmount. S'il place quelque chose dans /var/run, tel
un fichier .pid, alors il devra démarrer après bootmisc :
Exemple de code 4.5 : Exemple de fonction depend() |
depend() {
need localmount
after bootmisc
}
|
Fonctions standard
En plus de la fonction depend(), vous devez définir la fonction
start() qui doit contenir les commandes nécessaires pour activer le
service. Il est conseillé d'utiliser les fonctions ebegin et eend
pour afficher des messages à l'écran et ainsi informer l'utilisateur de ce qu'il advient de
la tentative de démarrage d'un service.
Exemple de code 4.6 : Exemple de fonction start() |
start() {
if [ "${RC_CMD}" = "restart" ];
then
fi
ebegin "Starting my_service"
start-stop-daemon --start --exec /path/to/my_service \
--pidfile /path/to/my_pidfile
eend $?
}
|
Les options --exec et --pidfile devraient être utilisées
dans les fonctions start et stop. Si le service ne crée pas de fichier .pid,
alors utilisez --make-pidfile, si possible, bien que vous devriez
le tester pour en être sûr. Dans le cas contraire, n'utilisez pas de fichier
.pid. Vous pouvez aussi ajouter --quiet aux options
start-stop-daemon, bien que cela soit déconseillé à moins que le
service soit extrêmement verbeux. En effet, utiliser --quiet peut
cacher des informations de débogage utiles si le démarrage du service
échoue.
Un autre réglage notable utilisé dans l'exemple précédent est de vérifier le contenu de la variable RC_CMD. Contrairement aux précédents scripts d'initialisation, le nouveau système
openrc ne prend pas en charge les fonctions de redémarrage spécifique à un script. Au lieu de cela, le script doit vérifier le contenu de la variable RC_CMD pour savoir si une fonction (qu'elle soit start() ou stop()) est appelée à l'intérieur d'un restart ou pas.
Note :
assurez-vous que --exec appelle effectivement un service et pas
simplement un script shell qui lance des services (c'est ce que le script
init est censé faire).
|
Vous trouverez plus d'exemples de fonctions start() dans les sources des
scripts d'initialisation, localisés dans le répertoire
/etc/init.d.
Vous pouvez aussi définir la fonction facultative stop() pour arrêter
un service, mais
Gentoo est capable de s'en passer si vous avez utilisé la commande
start-stop-daemon.
En voici quand même un exemple :
Exemple de code 4.7 : Exemple de fonction stop() |
stop() {
ebegin "Arrêt de mon_service"
start-stop-daemon --stop --exec /chemin/vers/mon_service \
--pidfile /chemin/vers/mon_fichier_pid
eend $?
}
|
Si votre service exécute un script (Bash, Python ou Perl par exemple) dont le
nom change par la suite (par exemple, toto.py devient toto), il
faut alors ajouter l'option --name à la commande
start-stop-daemon. Vous devez y spécifier le nom du script après
changement. Dans cet exemple, un service démarre toto.py dont le nom
devient toto :
Exemple de code 4.8 : Un service qui lance le script toto |
start() {
ebegin "Démarrage de mon_script"
start-stop-daemon --start --exec /chemin/vers/mon_script \
--pidfile /chemin/vers/mon_fichier_pid --name toto
eend $?
}
|
Pour de plus amples informations, une excellente page de manuel (man page) est disponible pour la
commande start-stop-daemon :
Exemple de code 4.9 : Consulter le manuel de start-stop-daemon |
$ man start-stop-daemon
|
La syntaxe des scripts d'initialisation est basée sur le Shell POSIX. Vous pouvez donc utiliser toutes les fonctionnalités de bash (ou compatibles sh) dans vos scripts.
Ajouter une option personnalisée
Si vous voulez utiliser une option non prévue par nos scripts, vous devez
l'ajouter à la variable extra_commands et créer une fonction qui a le même nom que l'option. Par
exemple, pour ajouter une option restartdelay :
Exemple de code 4.10 : Ajouter une option restartdelay |
extra_commands="restartdelay"
restartdelay() {
stop
sleep 3
start
}
|
Important :
la fonction restart() ne peut pas être ré-écrite (overriden) dans openrc!
|
Variables de configuration d'un service
Vous ne devez rien faire de particulier pour utiliser un fichier de
configuration dans /etc/conf.d : avant que votre script
d'initalisation ne soit exécuté, les variables des fichiers suivants sont
initialisées dans cet ordre :
- /etc/conf.d/<votre_script>
- /etc/conf.d/basic
- /etc/rc.conf
De plus, si votre script contribue à un service virtuel (comme net),
le fichier de configuration correspondant (comme /etc/conf.d/net)
sera également lu.
4.e. Modifier le comportement des niveaux d'exécution
Quel intérêt et pour qui ?
Les utilisateurs d'ordinateurs portables connaissent bien le problème :
vous devez démarrer net.eth0 à la maison, mais pas lorsque vous êtes en
vadrouille puisque vous n'êtes alors plus connecté à votre réseau. Vous pouvez
adapter le comportement de Gentoo.
Par exemple, vous pouvez créer un second niveau d'exécution similaire au niveau
« default », mais sans les options réseau. Vous pourrez ensuite
sélectionner le niveau d'exécution au démarrage de votre machine.
Utiliser « softlevel »
Créez votre second niveau d'exécution similaire à « default ». Dans
notre exemple, nous créons un niveau « offline ».
Exemple de code 5.1 : Créer le répertoire du nouveau niveau d'exécution |
# mkdir /etc/runlevels/offline
|
Ajoutez les scripts d'initialisation à votre nouveau niveau d'exécution. Par
exemple, pour copier le niveau « default » sauf le script
net.eth0 :
Exemple de code 5.2 : Recopier les scripts d'initialisation |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
acpid | offline
domainname | offline
local | offline
net.eth0 |
|
Même si net.eth0 a été retiré du niveau d'exécution offline,
udev va quand même essayer de démarrer les interfaces qu'il détecte
et lancer les services associés, une fonctionnalité appelée démarrage à chaud.
Par défaut, Gentoo n'active pas le démarrage à chaud.
Si vous voulez activer le démarrage à chaud, mais uniquement pour un choix de scripts,
utilisez la variable rc_hotplug dans /etc/rc.conf:
Exemple de code 5.3 : Désactiver un service démarré par une interface dans /etc/conf.d/rc |
rc_hotplug="net.wlan !net.*"
|
Note :
vous trouverez plus d'informations sur les services démarrés par les
interfaces en consultant les commentaires du fichier
/etc/rc.conf.
|
Ensuite, modifiez la configuration de votre chargeur de démarrage pour y
ajouter une nouvelle option pour le niveau offline. Par exemple, pour
grub, modifiez /boot/grub/grub.conf :
Exemple de code 5.4 : Ajouter une entrée dans le menu de démarrage |
title Gentoo Linux Offline
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Voilà, c'est terminé. Si vous redémarrez votre machine et que vous choisissez
la nouvelle entrée, le niveau d'exécution offline sera utilisé au lieu
du niveau default.
Utiliser « bootlevel »
L'utilisation de l'option bootlevel est tout à fait analogue à celle de softlevel. La seule différence ici, c'est que vous définissez un deuxième niveau d'exécution "boot" au lieu de définir un deuxième niveau d'exécution "défaut".
5. Variables d'environnement
4.a. Variables d'environnement ?
Que sont-elles ?
Une variable d'environnement est un objet nommé qui contient des informations
utilisées par une ou plusieurs applications. Beaucoup d'utilisateurs
(particulièrement les nouveaux Linuxiens) trouvent que c'est un peu trop
compliqué et ingérable. C'est bien sûr faux : en utilisant des variables
d'environnement, on peut changer facilement la valeur d'une configuration pour
une ou plusieurs applications.
Exemples importants
Le tableau suivant liste un certain nombre de variables utilisées par le système
Linux et décrit leur utilisation. Des exemples de valeurs seront présentés après
le tableau.
| Variable |
Description |
| PATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels le système cherche des fichiers exécutables. Si vous entrez le
nom d'un exécutable (tel que ls, rc-update ou emerge),
mais que cet exécutable n'est pas situé dans un des répertoires listés,
votre système ne l'exécutera pas (tant que vous n'aurez pas spécifié le
chemin complet avec ligne de commande, tel que /bin/ls).
|
| ROOTPATH |
Cette variable a la même fonction que PATH, mais celle-ci liste les
répertoires qui doivent être parcourus lorsque l'utilisateur root entre une
commande.
|
| LDPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels l'éditeur de liens dynamique cherche les bibliothèques.
|
| MANPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande man cherche les pages man.
|
| INFODIR |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande info cherche les pages info.
|
| PAGER |
Cette variable contient le chemin vers le programme utilisé pour lister le
contenu des fichiers (tel que less ou more).
|
| EDITOR |
Cette variable contient le chemin vers le programme utilisé pour éditer le
contenu des fichiers (tel que nano ou vi).
|
| KDEDIRS |
Cette variable contient une liste de répertoires séparés par des deux-points
qui contiennent les éléments spécifiques à KDE.
|
| CONFIG_PROTECT |
Cette variable contient une liste de répertoires séparés par des
espaces qui doivent être préservés par Portage pendant les mises à
jour.
|
| CONFIG_PROTECT_MASK |
Cette variable contient une liste de répertoires séparés par des
espaces qui ne doivent pas être préservés par Portage pendant les
mises à jour.
|
Voici un exemple de définition de toutes ces variables :
Exemple de code 1.1 : Exemple de définitions |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Définir des variables globalement
Le répertoire /etc/env.d
Pour centraliser les définitons de ces variables, la distribution Gentoo utilise le
répertoire /etc/env.d. Dans ce répertoire, vous trouverez un certain
nombre de fichiers tels que 00basic, 05gcc, etc. qui
contiennent les variables requises par les applications mentionnées dans leurs
noms.
Par exemple, quand vous installez gcc, un fichier nommé
05gcc est créé par l'ebuild et contient les définitions des
variables suivantes :
Exemple de code 2.1 : /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Les autres distributions vous disent de changer ou d'ajouter ces variables
d'environnement dans /etc/profile ou ailleurs. Par contre, Gentoo
vous facilite la maintenance et l'administration de ces
variables d'environnement, ce qui vous évite de vous soucier des nombreux
fichiers qui peuvent contenir ces variables d'environnement. (Cela profite
également au système Portage.)
Par exemple, lorsque gcc est mis à jour, le fichier
/etc/env.d/05gcc est aussi mis à jour sans que l'utilisateur ne
fasse quoi que se soit.
Cela n'est pas uniquement profitable à Portage, mais aussi à vous, en tant
qu'utilisateur. Occasionnellement, vous serez amené à définir des variables
d'environnement pour tout le système. Par exemple, avec la variable
http_proxy. Au lieu de vous embêter avec /etc/profile,
vous devez juste créer un fichier (/etc/env.d/99local)
et y entrer vos définitions :
Exemple de code 2.2 : /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
En utilisant le même fichier pour toutes vos variables, vous avez une vue
d'ensemble aisée de toutes les variables que vous avez définies.
Le script env-update
Plusieurs fichiers dans /etc/env.d définissent la variable
PATH. Ce n'est pas une erreur : quand vous lancez
env-update, celui-ci concatènera les définitions avant de mettre à jour
les variables d'environnement. Ainsi, il aide les paquets (et les utilisateurs)
à ajouter leurs propres variables d'environnement sans interférer avec les
valeurs déjà définies.
Le script env-update liste les valeurs des fichiers de
/etc/env.d par ordre alphabétique. Les noms des fichiers dans
/etc/env.d doivent commencer par deux chiffres décimaux.
Exemple de code 2.3 : Ordre de mise à jour par env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Cette concaténation de définitions pour la même variable n'est réalisée que
pourADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH,
KDEDIRS, PATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK,
PKG_CONFIG_PATH and PYTHONPATH.
Les autres variables reçoivent uniquement la dernière valeur définie dans les fichiers de /etc/env.d pris par ordre alphabétique.
Vous pouvez ajouter d'autres variables dans cette liste de variables concaténée en ajoutant le nom
de la variables en le séparant soit par DEUX POINTS soit par une ESPACE
(ceci égalemen dans un fichier env.d).
Quand vous lancez env-update, le script crée toutes les variables
d'environnement et les place dans /etc/profile.env (qui est utilisé
par /etc/profile). Il extrait aussi les informations de la variable
LDPATH et les utilise pour créer /etc/ld.so.conf. Après
cela, il lance ldconfig pour créer le fichier
/etc/ld.so.cache utilisé par l'éditeur de liens dynamique.
Si vous voulez connaitre le résultat de env-update immédiatement après
son exécution, lancez la commande suivante pour mettre votre système à jour.
Les utilisateurs qui ont installé Gentoo eux-même se souviendront surement
que cela se trouvait dans les instructions d'installation :
Exemple de code 2.4 : Mettre l'environnement à jour |
# env-update && source /etc/profile
|
Note :
la commande ci-dessus ne met à jour que les variables de votre terminal courant,
des nouvelles consoles et leurs enfants. Donc, si vous êtes sous X11,
vous devrez soit taper source /etc/profile dans chaque nouveau terminal
ouvert, soit relancer X afin que les nouveaux terminaux relisent et prennent en compte
les nouvelles variables. Si vous utiliser un gestionnaire de session (xdm, kdm,
gdm...), passez root et tapez /etc/init.d/xdm restart. Sinon, vous devrez
vous déconnecter et revenir dans X pour avoir les nouvelles variables.
|
Important :
vous ne pouvez pas utiliser de variables d'environnement lors d'une définition
de variable. C'est-à-dire que, par exemple, FOO="$BAR" (où $BAR
est une autre variable) est interdit.
|
5.c. Définir des variables localement
Spécifiques à un utilisateur
Vous n'avez pas toujours besoin de définir des variables d'environnement
globalement. Par exemple, vous pourriez avoir besoin d'ajouter
/home/my_user/bin et le répertoire courant (celui dans lequel l'utilisateur se trouve quand il lance une commande) à la variable PATH, mais vous ne voulez
pas que les autres utilisateurs de votre système l'aient aussi dans PATH.
Si vous voulez définir une variable d'environnement localement, vous devriez
utiliser ~/.bashrc ou ~/.bash_profile :
Exemple de code 3.1 : Étendre PATH pour un usage local avec ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Quand vous vous reconnecterez, votre variable PATH sera mise à jour.
Spécifiques à une session
Quelquefois, une définition plus spécifique est requise. Vous voudriez être
capable d'utiliser des binaires d'un répertoire temporaire que vous avez créé
sans utiliser le chemin complet ou éditer ~/.bashrc qui vous
prendrait trop de temps.
Dans ce cas-ci, vous pouvez juste définir la variable PATH dans votre
session courante en utilisant la commande export. Tant que vous ne vous
serez pas déconnecté, la variable PATH utilisera la valeur temporaire.
Exemple de code 3.2 : Définir une variable d'environnement spécifique à une session |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
C. Utiliser Portage
1. Fichiers et répertoires
1.a. Les fichiers utilisés par Portage
Configurer Portage
La configuration par défaut de Portage se trouve dans le fichier
/etc/make.globals. Vous remarquerez que toute la configuration de
Portage se fait grâce à des variables. Les variables et leur utilisation sont
décrites ci-dessous.
Puisque certaines directives de configuration diffèrent d'une architecture à
l'autre, Portage utilise aussi plusieurs fichiers de configuration qui font
partie de votre profil. Le profil sélectionné est celui vers lequel le lien symbolique
/etc/portage/make.profile pointe. La configuration de
Portage réside dans les différents fichiers make.defaults situés
dans l'arborescence qui mène au répertoire de votre profil. Nous aborderons les
profils et le répertoire /etc/portage/make.profile plus loin dans ce
document.
Pour modifier une variable de configuration, ne modifiez ni le fichier
/etc/make.globals, ni les fichiers
make.defaults. Modifiez plutôt /etc/portage/make.conf qui a
priorité sur les autres fichiers. Vous trouverez aussi un fichier
/usr/share/portage/config/make.conf.example, un fichier exemple que Portage ne lit pas mais que vous pouvez utiliser pour configurer votre propre
/etc/portage/make.conf.
Vous pouvez aussi définir ces variables dans votre environnement, mais nous ne
recommandons pas cette pratique.
Informations spécifiques au profil
Nous avons déjà mentionné le répertoire /etc/portage/make.profile. Ce
n'est pas vraiment un répertoire, mais un lien symbolique vers un profil qui se
trouve, par défaut, dans /usr/portage/profiles ; vous pouvez
créer des profils ailleurs. Ce lien symbolique définit le profil utilisé par
votre système.
Un profil contient des informations spécifiques pour chaque architecture telles
que la liste des paquets qui forment un système de base, une liste de paquets
qui ne fonctionnent pas ou qui sont masqués pour ce profil, etc.
Configuration par l'utilisateur
Pour influencer le comportement de Portage, vous devrez modifier des fichiers
dans le répertoire /etc/portage. Il est vivement recommandé
d'utiliser ces fichiers et de ne pas utiliser de variables
d'environnement.
Vous pouvez créer les fichiers suivants dans le répertoire
/etc/portage :
-
package.mask qui contient la liste des paquets que vous voulez ne
jamais installer.
-
package.unmask qui contient la liste des paquets que vous voulez
installer bien qu'ils aient été masqués par les développeurs Gentoo.
-
package.accept_keywords qui contient la liste des paquets que vous voulez
installer même s'ils ne sont pas (encore) considérés stables pour votre
architecture ou votre système.
-
package.use qui contient la liste des options de la variable USE
que vous voulez appliquer à certains paquets, mais que vous ne voulez pas
utiliser pour tout votre système.
Ce ne sont pas forcément des fichiers. Vous pouvez choisir de créer des
répertoires qui contiendraient un fichier par paquet. La page man contient plus
d'information à propos de ce que l'on peut faire avec le répertoire
/etc/portage et une liste exhaustive des fichiers qui influencent
le comportement de Portage.
Exemple de code 1.1 : lire la page man de Portage |
$ man portage
|
Déplacer les fichiers et les répertoires de Portage
Les fichiers de configuration mentionnés ci-dessus ne peuvent pas se trouver
ailleurs. Portage les recherche toujours à ces endroits précis. Cependant, Portage
peut être configuré pour utiliser d'autres répertoires pour certains
fichiers : le répertoire temporaire d'installation, les sources, l'arbre
Portage, etc.
Par défaut, tous ces fichiers sont stockés dans des répertoires bien connus,
mais ils peuvent être stockés ailleurs en fonction de variables définies dans
le fichier /etc/portage/make.conf. Ce qui suit est consacré aux différents
répertoires utilisés par Portage et à la methode à utiliser pour les déplacer.
Ce document n'est pas une liste exhaustive de tous les répertoires disponibles.
Cette liste est disponible dans les pages man de Portage et de
make.conf :
Exemple de code 1.2 : lire les pages man de Portage et de make.conf |
$ man portage
$ man make.conf
|
1.b. Emplacemements des fichiers
L'arbre Portage
Le répertoire par défaut pour l'arbre Portage est /usr/portage. La
variable PORTDIR peut être utilisée pour définir un autre emplacement.
N'oubliez pas de rediriger le lien symbolique /etc/portage/make.profile
vers le répertoire ad hoc.
Si vous redéfinissez la variable PORTDIR, vous devriez sans doute redéfinir les
variables PKGDIR, DISTDIR et RPMDIR, car elles ne prendront pas la valeur de
PORTDIR en compte.
Binaires précompilés
Portage peut également utiliser des paquets précompilés lors des installations,
bien que cette fonctionnalité soit désactivée par défaut. Les paquets
précompilés sont placés dans le répertoire défini par la variable PKGDIR, qui
est définie comme /usr/portage/packages par défaut.
Code source
Le code source des applications est conservé dans
/usr/portage/distfiles. Cet emplacement est défini par la variable
DISTDIR.
La base de données de Portage
Portage mémorise l'état de votre système (quels sont les paquets installés, quels fichiers appartiennent à quel paquet, ... ) /var/db/pkg. Ne modifiez pas ces fichiers à la main ! Cela pourrait pourrait faire perdre à Portage l'exacte vision de votre système.
Le cache de Portage
Le cache de Portage (qui contient les dates de modification, les virtuels, les modifications de l'arbre de dépendances, ...) est stocké /var/cache/edb. Cet emplacement est réellement un cache, vous pouvez le vider is vous n'êtes pas en train d'exécuter une application en relation avec Portage.
1.c. Compiler les paquets
Fichiers temporaires
Portage sauve ses fichiers temporaires dans /var/tmp par défaut.
La variable PORTAGE_TMPDIR définit cet emplacement.
Si vous redéfinissez la variable PORTAGE_TMPDIR, vous devriez aussi redéfinir
BUILD_PREFIX, car elle ne tient pas compte du changement automatiquement.
Répertoire de compilation
Portage crée un répertoire de compilation pour chaque paquet dans le répertoire
/var/tmp/portage. Cet emplacement est défini par la variable
BUILD_PREFIX.
Localisation du système de fichiers principal
Par défaut, Portage installe tous les fichiers sur le système de fichiers
courant (/), mais il peut copier les fichiers ailleurs si vous
redéfinissez la variable ROOT. Cela peut être utile si vous voulez construire
des nouvelles images d'installation pour d'autres systèmes.
1.d. Fonctions de journalisation des événements
Les messages des ebuilds
Portage peut journaliser les messages des événements relatifs aux ebuilds en
utilisant un fichier pour chaque ebuild, mais uniquement si la variable
PORT_LOGDIR correspond à un répertoire dans lequel Portage peut écrire
(l'utilisateur portage doit disposer des permissions nécessaires).
Par défaut, cette variable n'est pas définie.
Si PORT_LOGDIR n'est pas définie, vous ne recevrez pas les messages des
événements relatifs à la construction des paquets avec le système de journal
actuel, mais vous devriez en recevoir quelques-uns avec le nouveau système
appelé elog. Si PORT_LOGDIR est définie et que vous utilisez elog,
vous recevrez à la fois les messages de construction et tous ceux qui sont
sauvegardés par elog, comme expliqué plus loin.
Portage propose un contrôle fin de la tenue du journal des événements
via elog :
-
PORTAGE_ELOG_CLASSES : utilisez cette variable pour définir le type de
message à enregistrer. Vous pouvez utiliser n'importe quelle combinaison à
base d'info, warn, error, log et qa,
séparés par des espaces.
-
info : enregistre les messages « einfo » produits
par un ebuild,
-
warn : enregistre les messages « ewarn » produits
par un ebuild,
-
error : enregistre les messages « eerror »
produits par un ebuild,
-
log : enregistre les messages « elog » que l'on
trouve dans certains ebuilds,
-
qa : enregistre les messages « QA Notice »
produits par un ebuild.
-
PORTAGE_ELOG_SYSTEM : cette variable sert à choisir le ou les modules
qui vont traiter les messages. L'enregistrement est désactivé si cette
variable reste nulle. Vous pouvez utiliser n'importe quelle combinaison des
modules save, custom, syslog, mail,
save_summary, et mail_summary, séparés par une espace. Vous
devez sélectionner au moins un module pour utiliser elog.
-
save : ce module active la sauvegarde d'un enregistrement
par paquet dans $PORT_LOGDIR/elog, ou
/var/log/portage/elog si $PORT_LOGDIR n'est pas définie,
-
custom : transmet tous les messages à une commande définie
par l'utilisateur dans $PORTAGE_ELOG_COMMAND (détaillée plus bas),
-
syslog : envoie tous les messages à l'outil de
journalisation des événements du système (syslog-ng par exemple),
-
mail : envoie tous les messages à un serveur de mail défini
dans $PORTAGE_ELOG_MAILURI, détaillée plus loin dans ce document. Cette
fonction nécessite une version de Portage supérieure ou égale à 2.1.1,
-
save_summary : similaire à save, mais rassemble tous
les messages dans $PORT_LOGDIR/elog/summary.log, ou
/var/log/portage/elog/summary.log si $PORT_LOGDIR n'est pas
définie,
-
mail_summary: similaire à mail, mais envoie tous les
messages dans un seul mail quand emerge se termine.
-
PORTAGE_ELOG_COMMAND : cette option n'est utile qu'avec le module
custom activé. C'est ici que vous spécifiez la commande qui va
traiter les événements. Vous pouvez utiliser deux variables pour
personnaliser votre commande : ${PACKAGE}, qui est le nom et la version
du paquet, et ${LOGFILE}, qui est le chemin absolu du fichier
d'enregistrement. Voici un exemple d'utilisation :
-
PORTAGE_ELOG_COMMAND="/chemin/vers/mon/enregistreur -p '\${PACKAGE}'
-f '\${LOGFILE}'"
-
PORTAGE_ELOG_MAILURI : cette option sert à définir les paramètres du
module mail tels que l'adresse, le nom d'utilisateur, le mot de
passe, le serveur de mail et le numéro de port. Les paramètres par défaut
sont "root@localhost localhost".
-
Prenons l'exemple d'un serveur SMTP avec authentification basée sur le nom
et le mot de passe et qui écoute sur un port particulier (par défaut, un
serveur SMTP est configuré sur le port 25) :
-
PORTAGE_ELOG_MAILURI="utilisateur@mon.domaine
nom_utilisateur:mot_de_passe@smtp.mon.domaine:995"
-
PORTAGE_ELOG_MAILFROM : vous permet de modifier le champ
« From » (expéditeur) des mails envoyés par elog. Par défaut, ces
mails ont pour expéditeur « portage ».
-
PORTAGE_ELOG_MAILSUBJECT : avec cette variable, vous changez le sujet
des mails envoyés par elog. Notez que vous pouvez utiliser les variables
${PACKAGE} et ${HOST} pour afficher respectivement le couple nom/version du
paquet et le nom de domaine de la machine hôte sur laquelle tourne Portage.
-
Voici un exemple d'utilisation :
-
PORTAGE_ELOG_MAILSUBJECT="le paquet \${PACKAGE} a été construit sur
\${HOST} accompagné de messages."
Important :
si vous utilisiez enotice avec Portage-2.0.*, vous devez le désinstaller
complétement car enotice est incompatible avec elog.
|
2. Les variables de configuration
2.a. Configuration de Portage
Portage peut être configuré grâce à de nombreuses variables que vous définissez
dans le fichier /etc/portage/make.conf. Vous trouverez une description
complète de ces variables dans la page man de make.conf.
Pour la consulter, faites :
Exemple de code 1.1 : lire la page man de make.conf |
$ man make.conf
|
2.b. Options relatives à la compilation
Les options de configuration et de compilation
Quand Portage compile une application, il passe les variables suivantes au
script de configuration et au compilateur :
-
CFLAGS et CXXFLAGS définissent les options des compilateurs C et C++.
-
CHOST définit le type d'hôte pour le script de configuration.
-
MAKEOPTS est passé au programme make et sert à définir le nombre de
tâches de compilation maximum à lancer en parallèle. Vous trouverez plus
d'information sur le programme make dans sa page man.
La variable USE est aussi utilisée par les processus de configuration et de
compilation et a déjà été documentée dans des chapitres précédents.
Options d'intégration
Quand Portage a fini d'intégrer une nouvelle version d'un paquet au système, il
supprime les fichiers des versions précédentes. Portage donne cinq secondes à l'utilisateur pour
s'opposer à la suppression de ces fichiers. Ce délai est paramétrable grâce à la variable
CLEAN_DELAY.
Vous pouvez aussi configurer emerge pour qu'il se lance
systématiquement accompagné de certaines options en configurant la variable
EMERGE_DEFAULT_OPTS. Cela peut-être utile pour des options comme --ask,
--verbose et --tree par exemple.
3.c. Protection des fichiers de configuration
Répertoires protégés
Portage remplace les fichiers des anciennes versions des logiciels par ceux des
nouvelles versions qu'il installe sauf si ceux-ci se trouvent dans un
répertoire protégé. La liste de ces répertoires est définie par la
variable CONFIG_PROTECT. Les répertoires sont séparés par des espaces. Ceux-ci
sont généralement des répertoires qui accueillent des fichiers de
configuration.
Un fichier qui devrait être installé dans un répertoire protégé est renommé et
l'utilisateur est averti de la présence d'un nouveau fichier de configuration.
Vous pouvez afficher la liste des répertoires protégés avec la commande
emerge --info :
Exemple de code 3.1 : afficher la variable CONFIG_PROTECT |
$ emerge --info | grep 'CONFIG_PROTECT='
|
La section CONFIGURATION FILES de la page man d'emerge contient plus
d'informations à propos de la proctection des fichiers de configuration par
Portage :
Exemple de code 3.2 : afficher l'aide de Portage sur la protection des fichiers |
$ man emerge
|
Exclure des répertoires
Vous pouvez exclure certains répertoires de cette protection en les définissant
dans la variable CONFIG_PROTECT_MASK.
3.d. Options de téléchargement
Les serveurs
Quand Portage a besoin de fichiers qui ne sont pas sur votre machine, il essaie
de les télécharger. Les serveurs qu'il contacte sont définis dans les variables
suivantes :
-
GENTOO_MIRRORS définit la liste des serveurs qui contiennent les sources
des paquets (les « distfiles »).
-
PORTAGE_BINHOST définit les serveurs qui offrent des paquets binaires
précompilés.
Une troisième variable contient le nom du serveur que Portage contacte quand il
doit synchroniser son arbre :
-
SYNC définit le serveur utilisé pour synchroniser l'arbre Portage.
Les variables GENTOO_MIRRORS et SYNC peuvent être définies automatiquement par
le programme mirrorselect. Vous devez l'installer avec la commande
emerge mirrorselect si vous comptez l'utiliser. Vous pouvez consulter
l'aide de mirrorselect avec la commande suivante :
Exemple de code 4.1 : plus d'information sur mirrorselect |
# mirrorselect --help
|
Si vous devez utiliser un serveur mandataire (« proxy server »), vous
devez définir son nom dans les variables http_proxy, ftp_proxy et RSYNC_PROXY.
Outils de téléchargement
Quand Portage doit télécharger les sources d'un paquet, il utilise wget
par défaut. Vous pouvez lui faire utiliser une autre commande grâce à la
variable FETCHCOMMAND.
Portage est capable de reprendre un téléchargement interrompu. Il utilise aussi
la commande wget par défaut, mais vous pouvez changer cela grâce à la
variable RESUMECOMMAND.
Veuillez vérifier que les commandes que vous définissez dans les variables
FETCHCOMMAND et RESUMECOMMAND sauvegardent les fichiers téléchargés à la bonne
place. Utilisez les valeurs \${URI} et \${DISTDIR} pour indiquer respectivement
l'origine des sources et le répertoire dans lequel les enregistrer.
Vous pouvez même définir des commandes spécifiques par protocole grâce aux
variables FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP,
RESUMECOMMAND_FTP.
Options de rsync
Vous ne pouvez pas utiliser une autre commande que rsync pour mettre l'arbre
Portage à jour, mais vous pouvez configurer cette commande avec les variables
suivantes :
-
PORTAGE_RSYNC_OPTS définit un ensemble d'options, séparées par une
espace, qui seront utilisées par défaut. Cette variable ne devrait pas
être modifiée, sauf si vous savez exactement ce que vous faites.
Notez que certaines options sont indispensables et seront toujours
utilisées, même si elles ne sont plus dans PORTAGE_RSYNC_OPTS.
-
PORTAGE_RSYNC_EXTRA_OPTS est utilisée pour définir des options
supplémentaires à passer à rsync. On sépare ces options avec une
espace.
-
--timeout=<number> : définit le délai maximum (en secondes)
pour établir la connexion avec le serveur rsync. La valeur par défaut est
de 180 mais les utilisateurs de modem RTC ou ceux qui possèdent une
machine lente peuvent monter cette valeur à 300 et plus.
-
--exclude-from=/etc/portage/rsync_excludes est un fichier qui contient
la liste des paquets et/ou des catégories de paquets que rsync ignorera
pendant la mise à jour. Dans cet exemple, le ficher en question est
/etc/portage/rsync_excludes. La syntaxe à utiliser est
détaillée dans le document Diverger de
l'arbre officiel.
- --quiet : réduit les sorties à l'écran.
- --verbose : Imprime la liste complète des fichiers.
-
--progress : affiche une barre de progression pour chaque fichier.
-
PORTAGE_RSYNC_RETRIES est le nombre d'essais maximum pour tenter d'établir
une connexion avec le miroir (dont l'adresse est définie par la variable
SYNC). Par défaut, cette variable est égale à 3.
Pour plus d'informations sur toutes les options disponibles, référez-vous à
la page du manuel rsync.
2.e. Configuration de Gentoo
Choix de la branche
Vous pouvez définir la branche à utiliser avec la variable ACCEPT_KEYWORDS. La
valeur par défaut est la branche stable pour votre architecture. Vous trouverez
plus de détails à ce sujet dans le chapitre suivant.
Fonctionnalités de Portage
Vous pouvez activer certaines fonctionnalités de Portage grâce à la variable
FEATURES. Celles-ci ont déjà été abordées dans des chapitres précédents tels
que Portage et ses fonctionnalités.
2.f. Comportement de Portage
Gestion des ressources
La variable PORTAGE_NICENESS permet de réduire ou d'augmenter la valeur
« nice » avec laquelle Portage s'exécute. La valeur de
PORTAGE_NICENESS est ajoutée à la valeur « nice » en cours.
Cette valeur permet de rendre le processus de compilation plus ou moins
prioritaire. Une valeur élevée rend Portage moins prioritaire par rapport aux
autres processus et laisse le système plus disponible.
Pour plus d'information à propos de nice, veuillez consulter sa page
man :
Exemple de code 6.1 : la page man de nice |
$ man nice
|
Configuration de l'affichage
La variable NOCOLOR, dont la valeur par défaut est « false », indique
à Portage de ne pas utiliser de couleurs dans son affichage.
3. Faire cohabiter des branches différentes
3.a. Choisir sa branche
La branche stable
La variable ACCEPT_KEYWORDS définit quelle branche vous voulez utiliser. La
valeur par défaut est la branche stable pour votre architecture, par exemple
x86.
Il est recommandé de n'utiliser que la branche stable. Cependant, si la
stabilité des logiciels n'est pas votre première préoccupation ou si vous
souhaitez aider Gentoo et envoyer des rapports de bogues sur
http://bugs.gentoo.org, alors lisez ce qui suit.
La branche de test
Si vous désirez utiliser les versions les plus récentes des logiciels, vous
pouvez envisager de passer à la branche de test. Pour cela, ajoutez un ~
(tilde) devant le nom de votre architecture.
La branche de test désigne exactement ce que son nom indique - Test. Si
un paquet appartient à cette branche, cela signifie que les développeurs pensent
qu'il est fonctionnel mais qu'il n'a pas été suffisamment testé. Vous pouvez
très bien être le premier à découvrir un bogue sur le paquet, auquel cas vous
devriez remplir un rapport de bogue
pour que les développeurs soient au courant du problème.
Si vous décidez d'utiliser cette branche de test, attendez-vous à rencontrer
des problèmes de stabilité, des paquets imparfaits, notamment en ce qui
concerne les dépendances, des mises à jour fréquentes et donc beaucoup de
compilations, voire des paquets qui cessent de fonctionner. Si vous ne
maitrisez pas Gentoo ou si vous ne savez pas comment résoudre les problèmes
éventuels, il est fortement recommandé de vous en tenir à la branche stable.
Par exemple, pour utiliser la branche de test sur une machine x86, modifiez le
fichier /etc/portage/make.conf comme suit :
Exemple de code 1.1 : modifier la variable ACCEPT_KEYWORDS |
ACCEPT_KEYWORDS="~x86"
|
Si vous mettez votre système à jour maintenant, vous constaterez que
beaucoup de paquets vont être mis à jour. Veuillez noter qu'une fois
passé à la branche de test, il est pratiquement impossible de revenir à la
branche stable (sauf si vous avez fait de sauvegardes).
3.b. Mélanger les branches STABLE et TEST
L'emplacement package.accept_keywords
Il est possible d'indiquer à Portage d'utiliser les versions de test pour
certains paquets tout en restant dans la branche stable. Pour cela, ajoutez le
nom du paquet dont vous voulez la version instable et sa catégorie dans le
fichier /etc/portage/package.accept_keywords. Vous pouvez aussi créer un
répertoire (du même nom) et lister les paquets dans des fichiers contenus
dans ce répertoire. Par exemple, pour utiliser la version instable de
gnumeric, ajoutez :
Exemple de code 2.1 : ajouter gnumeric dans /etc/portage/package.accept_keywords |
app-office/gnumeric
|
Tester une version donnée
Si vous voulez tester une version donnée, mais ne voulez pas que Portage mette
cette version à jour par la suite, vous pouvez spécifier le numéro de version
désiré dans l'emplacement /etc/portage/package.accept_keywords avec
l'opérateur =. Il est également possible de spécifier une plage de versions
avec les opérateurs <=, <, > ou >=.
Si vous spécifiez un numéro de version, vous devez utiliser un opérateur. Sans
numéro de version, vous ne pouvez pas utiliser d'opérateur.
Dans l'exemple suivant, demandons à Portage d'accepter la version 1.2.13 de
gnumeric :
Exemple de code 2.2 : utiliser une version de test précise de gnumeric |
=app-office/gnumeric-1.2.13
|
3.c. Utiliser des paquets masqués
L'emplacement package.unmask
Important :
les développeurs Gentoo ne fournissent aucun support pour
l'utilisation de cet emplacement. Faites très attention quand vous l'utilisez.
Les demandes de support concernant package.unmask et/ou
package.mask ne seront pas considérées. Vous aurez été prévenu.
|
Si un paquet a été masqué par les développeurs Gentoo et que vous voulez
l'installer malgré les raisons précisées dans le fichier
package.mask (par défaut dans le répertoire
/usr/portage/profiles), ajoutez exactement la même ligne
dans le fichier /etc/portage/package.unmask (ou dans un fichier de
ce répertoire, si c'est un répertoire).
Par exemple, si =net-mail/hotwayd-0.8 a été masqué, vous pouvez le
rendre disponible en ajoutant la même ligne dans l'emplacement
package.unmask :
Exemple de code 3.1 : exemple de /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
Note :
si une entrée dans /usr/portage/profiles/package.mask contient une plage
de versions d'un paquet, vous devez démasquer les seules versions que vous désirez réellement.
Reportez-vous à la section précédente pour apprendre comment spécifier une version dans package.unmask.
|
L'emplacement package.mask
Si vous voulez empêcher Portage d'installer un paquet ou une version
particulière d'un paquet, vous pouvez ajouter son nom dans l'emplacement
/etc/portage/package.mask (soit dans ce fichier, soit dans un
fichier qui appartient à ce répertoire, s'il en est).
Par exemple, pour empêcher Portage d'installer des sources de noyaux plus
récentes que gentoo-sources-2.6.8.1, ajoutez la ligne suivante dans
l'emplacement package.mask :
Exemple de code 3.2 : exemple de /etc/portage/package.mask |
>sys-kernel/gentoo-sources-2.6.8.1
|
4. Outils supplémentaires
4.a. dispatch-conf
L'outil dispatch-conf vous aide à intégrer les fichiers
._cfg0000_<nom>. Les fichiers
._cfg0000_<nom> sont créés par Portage quand un nouveau
fichier devrait en remplacer un autre dans un répertoire protégé par la
variable CONFIG_PROTECT.
Le programme dispatch-conf permet de garder une trace des modifications
apportées à vos fichiers de configuration. En effet, il stocke les différences
grâce au système de contrôle de versions RCS. Cela signifie que si vous faites
une erreur en modifiant un fichier de configuration, vous avez la possibilité
de revenir en arrière à tout moment.
Lorsque vous utilisez dispatch-conf pour mettre à jour un fichier, vous
avez le choix de le garder intact, de le remplacer par sa version mise à jour,
de le modifier directement ou d'intégrer les différences interactivement entre
la version actuelle et sa mise à jour. dispatch-conf peut même :
-
Intégrer automatiquement les fichiers où seuls des commentaires ont été
modifiés.
-
Intégrer automatiquement les fichiers qui ne varient que par des espaces,
des tabulations ou autres caractères « blancs ».
Commencez par éditer le fichier /etc/dispatch-conf.conf et par
créer le répertoire défini par la variable « archive-dir ».
Exemple de code 1.1 : exécuter dispatch-conf |
# dispatch-conf
|
dispatch-conf va vous proposer chaque fichier de configuration ayant été
modifié, un par un. Pressez u (update) pour remplacer le fichier
actuel par sa mise à jour et continuer avec le fichier suivant. Pressez
z pour « zapper » (supprimer) cette mise à jour et continuer
avec le fichier suivant. Lorsque vous aurez traité tous les fichiers,
dispatch-conf terminera. Vous pouvez également presser q à
n'importe quel moment pour quitter.
Pour plus d'informations, allez donc voir la page man de dispatch-conf.
Elle vous dira comment intégrer les différences une par une entre une mise à
jour et le fichier actuel, comment éditer la mise à jour avant de remplacer la
version actuelle, comment voir les différences entre les deux, etc.
Exemple de code 1.2 : lire la page man de dispatch-conf |
$ man dispatch-conf
|
4.b. etc-update
Vous pouvez aussi utiliser etc-update pour mettre à jour vos fichiers de
configuration. Il n'est pas aussi simple d'utilisation que
dispatch-conf, il contient moins de fonctionnalités, mais il peut
intégrer les différences d'une manière interactive et peut aussi s'occuper
automatiquement des mises à jour triviales.
Par contre, à la différence de dispatch-conf, etc-update ne garde
pas l'historique des modifications des fichiers. Une fois qu'un fichier
est modifié, l'ancienne version est irrécupérable. Alors, soyez très prudent,
l'utilisation d'etc-update est significativement moins sure que celle de
dispatch-conf.
Exemple de code 2.1 : démarrer etc-update |
# etc-update
|
Après avoir intégré les modifications triviales, le programme affiche une liste
des fichiers protégés qui n'ont pas été remplacés et pour lesquels une mise à
jour est peut-être souhaitable. Les choix suivants sont indiqués au bas de la
liste :
Exemple de code 2.2 : menu etc-update |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
Si vous entrez -1, etc-update quitte et ne change rien aux
fichiers qui restent dans la liste. Si vous entrez -3 ou-5,
tous les fichiers seront remplacés par les nouvelles versions. Il est
donc très important de sélectionner les fichiers qui ne doivent pas être
remplacés automatiquement avant de choisir cette option. Il suffit d'entrer le
numéro du fichier dans la liste.
Par exemple, si vous sélectionnez le fichier /etc/pear.conf :
Exemple de code 2.3 : mettre un fichier de configuration à jour |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
Vous pouvez voir les différences entre le fichiers. Si vous pensez que la
nouvelle version peut être utilisée sur votre système, tapez 1. Si vous
pensez que la nouvelle version n'apporte rien qui ne vous soit utile ou qu'elle
n'est pas nécessaire, tapez 2. Si vous voulez intégrer des parties de la
nouvelle version de façon interactive, tapez 3.
Pendant l'intégration interactive, vous devez choisir entre les anciennes et
les nouvelles lignes. Les commandes suivantes vous permettent d'indiquer votre
choix :
Exemple de code 2.4 : commandes disponibles pendant l'intégration interactive |
ed: Modifier et garder les deux versions avec un en-tête.
eb: Modifier et garder les deux versions.
el: Modifier et garder la version de gauche.
er: Modifier et garder la version de droite.
e: Saisir une nouvelle version.
l: Garder la version de gauche.
r: Garder la version de droite.
s: Garder les deux lignes, sans commentaire.
v: Garder les deux lignes, avec commentaire.
q: Quitter.
|
Après avoir traité les fichiers que vous jugez importants, vous pouvez laisser
Portage intégrer les fichiers restants. Le programme etc-update
n'insistera pas s'il n'y a plus de fichiers à intégrer.
4.c. quickpkg
Le programme quickpkg permet de créer un paquet binaire à partir d'un
paquet qui est déjà installé sur votre système. Un tel paquet binaire peut être
réinstallé sans devoir le recompiler. Il suffit de taper la liste des paquets à
construire.
Par exemple, pour créer des paquets binaires pour curl, orage et
procps :
Exemple de code 3.1 : Exemple d'utilisation de quickpkg |
# quickpkg curl orage procps
|
Les paquets seront placés dans le répertoire $PKGDIR
(/usr/portage/packages/ par défaut) et des liens symboliques
vers ceux-ci seront créés dans $PKGDIR/<catégorie>.
5. Diverger de l'arbre officiel
5.a. Utiliser un sous-ensemble de l'arbre Portage
Exclure des paquets ou des catégories
Vous pouvez mettre certains paquets ou certaines catégories à jour et en
ignorer d'autres. Portage fait exclure ces catégories ou paquets par la
commande rsync qu'il utilise pour l'action emerge --sync.
Dans /etc/make.conf, la variable PORTAGE_RSYNC_EXTRA_OPTS
doit définir le nom du fichier qui contient les filtres d'exclusion.
Exemple de code 1.1 : définir le fichier qui contient les filtres d'exclusion dans /etc/make.conf |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
|
Exemple de code 1.2 : exclure tous les jeux dans /etc/portage/rsync_excludes |
games-*/*
|
Veuillez remarquer que cela peut causer des problèmes dans la gestion des
dépendances puisque de nouveaux paquets pourraient dépendre de nouveaux paquets que vous
avez exclus.
5.b. Ajouter des ebuilds non officiels
Définir un répertoire pour les arbres alternatifs
Portage peut utiliser des ebuilds qui ne se trouvent pas dans l'arbre Portage
officiel de Gentoo mais dans des arbres alternatifs placés dans des dépôts maintenus par des tierces parties. Pour cela, créez un répertoire, par exemple
/usr/local/portage, dans lequel vous pourrez copier des ebuilds
d'origines diverses. Vous devrez utiliser la même structure que pour l'arbre
officiel.
Ensuite, définissez la variable PORTDIR_OVERLAY dans le fichier
/etc/portage/make.conf et attribuez-lui le nom du répertoire que vous avez
créé. Portage utilisera alors les ebuilds des arbres alternatifs qui se trouvent dans ce répertoire,
mais ne les modifiera pas lors de l'opération de synchronisation emerge
--sync.
Utiliser plusieurs arbres alternatifs
Les utilisateurs avancés ont parfois besoin de conserver plusieurs arbres alternatifs, par exemple pour des ebuilds en test ou des arbres d'origines
diverses. Le paquet app-portage/layman contient l'outil
layman qui permet de maintenir ces arbres alternatifs à jour en les synchronisant avec leur dépôt.
Commencez par installer et configurer l'outil layman comme c'est expliqué dans Les arbres alternatifs de Gentoo : guide de l'utilisateur, et ajouter les arbres alternatifs de votre choix avec la commande layman -a <nom_du_dépôt> où nom_du_dépôt est le nom du dépôt à partir duquel l'arbre alternatif doit être synchronisé.
Supposons que vous ayez deux abres alternatifs appelés java (pour
vos développements d'ebuils java) et entapps (pour les ebuilds utilisés
dans votre entreprise). Vous pouvez mettre ces abres alternatifs à jour avec la
commande suivante :
Exemple de code 2.1 : mettre vos abres alternatifs à jour avec layman |
# layman -S
|
Pour plus d'information sur la manière de travailler avec des arbres alternatifs, lisez les pages de manuel de layman en utilisant la commande man layman et lisez aussi
le Les arbres alternatifs de Gentoo : guide de l'utilisateur.
5.c. Paquets gérés hors de Portage
Utiliser Portage avec des paquets gérés manuellement
Dans certains cas, vous voudrez peut-être configurer, installer et maintenir
des paquets vous-même sans que Portage ne s'en mêle même si le paquet est
disponible dans l'arbre Portage. Des cas typiques sont le noyau et les pilotes
nvidia. Vous pouvez configurer Portage pour qu'il sache que certains paquets
ont été installés manuellement. On appelle cela « injecter un
paquet » et cela se fait grâce au fichier
/etc/portage/profile/package.provided.
Par exemple, pour informer Portage que vous avez installé le noyau
gentoo-sources-2.6.11.6 manuellement, ajoutez la ligne
suivante au fichier /etc/portage/profile/package.provided :
Exemple de code 3.1 : une ligne dans package.provided |
sys-kernel/gentoo-sources-2.6.11.6
|
D. Configuration du réseau sous Gentoo
1. Préparation
1.a. Préparation
Note :
ce document suppose que vous avez correctement configuré votre noyau et vos
modules en fonction de votre matériel et que vous connaissez le nom de vos
interfaces. De plus, ce guide procédera à la configuration d'eth0, mais
cela pourrait tout aussi bien être eno0, ens1, wlan0, enp1s0 etc.
|
Pour être prêt à configurer votre carte réseau, vous devez indiquer au système
RC (N.D.T : Configuration des ressources) de Gentoo le nom de cette
interface. Pour cela, un lien symbolique doit être créé de net.lo
vers net.eth0 (ou tout autre nom attribué à votre interface dans votre système) dans le répertoire /etc/init.d/.
Exemple de code 1.1 : déclarer une interface réseau |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
Le système RC de Gentoo est à présent au courant pour votre interface. Il doit
maintenant savoir comment la configurer. Toutes les interfaces réseaux sont
configurées dans le fichier /etc/conf.d/net. Voici un exemple de
configuration en DHCP ou en adressage statique :
Exemple de code 1.2 : exemples de /etc/conf.d/net |
config_eth0="dhcp"
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
|
Note :
si vous ne spécifiez pas de configuration pour votre interface, elle sera
automatiquement configurée en DHCP.
|
Note :
CIDR signifie « Classless InterDomain Routing » (N.D.T : routage
sans tenir compte des classes). À l'origine, les adresses IPv4 étaient
classées A, B ou C. Ce vieux système de classification n'avait pas prévu la
popularité que connait aujourd'hui Internet et menaçait de ne plus pouvoir
offrir de nouvelles adresses. Le CIDR est un schéma d'adressage qui permet à
une adresse IP de désigner plusieurs adresses IP. Une adresse IP CIDR ressemble
à une adresse normale, sauf qu'elle se termine par un « / » (slash)
suivi d'un nombre. Par exemple : 192.168.0.0/16. Le CIDR est décrit en
anglais dans la RFC 1519.
|
Maintenant que notre interface est configurée, nous pouvons la démarrer et
l'arrêter grâce aux commandes suivantes :
Exemple de code 1.3 : démarrage et arrêt du réseau |
# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop
|
Important :
lorsque vous cherchez à résoudre un problème de réseau, jetez un coup d'œil dans
/var/log/rc.log. À moins d'avoir rc_logger="NO" paramétré
dans /etc/rc.conf, vous trouverez des informations sur le
processus de démarrage dans ce fichier de journal.
|
Maintenant que vous avez démarré et arrêté votre carte réseau avec succès, vous
voulez peut-être qu'elle soit démarrée automatiquement lorsque Gentoo démarre.
Voici comment faire. La commande « rc » demande à Gentoo de démarrer
tous les scripts du niveau d'exécution actuel qui ne le sont pas.
Exemple de code 1.4 : activer une interface réseau au démarrage du système |
# rc-update add net.eth0 default
# rc
|
2. Configuration avancée
2.a. Configuration avancée
La variable config_eth0 est le cœur de la configuration d'une interface.
Sa valeur est une liste d'instructions de haut niveau pour configurer une
interface (eth0 dans notre cas). Chaque commande de la liste
d'instructions est exécutée séquentiellement. L'interface est considérée active
si au moins une commande marche.
Voici une liste des instructions intégrées :
| Commande |
Description |
| null |
Ne fait rien. |
| noop |
Si l'interface est active et possède une adresse, alors annule sa
configuration en renvoyant un code de succès.
|
| Une adresse IPv4 ou IPv6 |
Ajoute l'adresse à l'interface. |
dhcp, adsl ou apipa
(ou bien une commande personnalisée venant d'une module tiers)
|
Exécute le module qui fournit la commande. Par exemple, dhcp
exécutera un module qui fournit le DHCP, ce qui peut être dhcpcd,
dhclient ou pump.
|
Si une commande échoue, vous pouvez spécifier une commande de secours. Celle-ci
doit correspondre exactement à la structure de configuration.
Vous pouvez enchainer ces commandes ensemble. Voici quelques vrais
exemples :
Exemple de code 1.1 : exemples de configuration |
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
|
Note :
lorsque vous utilisez le module ifconfig pour ajouter plusieurs
adresses, un alias d'interface est alors créé pour chaque adresse
supplémentaire. Donc, avec les deux exemples précédents, vous obtiendrez
eth0, eth0:1 et eth0:2. Vous ne pouvez rien faire de
particulier avec ces interfaces car le noyau et les applications considèreront
eth0:1 et eth0:2 comme n'étant juste qu'eth0.
|
Important :
l'ordre des commandes de secours est très important ! En effet, si nous
n'avions pas spécifié la commande null, alors la commande apipa
aurait été lancée si seule la commande noop avait échoué.
|
Note :
APIPA et
DHCP seront expliqués plus tard.
|
2.b. Dépendance du réseau
Les scripts de démarrage du répertoire /etc/init.d/ peuvent
dépendre d'une interface réseau particulière ou simplement de net.
Toutes les interfaces réseau dans le système d'initialisation de Gentoo
fournissent ce qui est appelé net.
Si rc_depend_strict="YES" est renseigné dans /etc/rc.conf,
alors toutes les interfaces réseau qui fournissent net doivent être actives
avant qu'une dépendance sur "net" soit satisfaite. Autrement dit, si vous
avez net.eth0 et net.eth1 et un script
d'initialisation qui dépend de "net", alors les deux doivent être actives.
À l'inverse, si rc_depend_strict="NO" est renseigné, alors la
dépendance sur "net" est résolue dès lors qu'une interface réseau est activée.
Mais comment fait-on si net.br0 dépend de net.eth0 et
de net.eth1 ? net.eth1 peut être une interface
wifi ou bien une connexion ppp qui nécessite une configuration avant de pouvoir
être ajouté au pont réseau. Nous ne pouvons régler ce problème dans
/etc/init.d/net.br0 puisque c'est un lien symbolique vers
net.lo.
La solution est de définir un paramètre rc_need_ dans
/etc/conf.d/net.
Exemple de code 2.1 : les dépendances de net.br0 dans /etc/conf.d/net |
rc_need_br0="net.eth0 net.eth1"
|
Ce paramètre seul n'est pas suffisant. Les scripts d'initialisation réseau
de Gentoo utilisent une dépendance virtuelle nommée net pour informer
le système que le réseau est disponible. Dans le cas présent, il est évident
que le réseau doit être marqué disponible quand net.br0 est
actif et non pas quand les autres le sont. Nous allons également renseigner
cela dans le fichier /etc/conf.d/net :
Exemple de code 2.2 : mise à jour des dépendances virtuelles pour le réseau |
rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
|
Pour une explication plus détaillée des dépendances, veuillez consulter la
section « Écrire un script
d'initialisation » du Manuel Gentoo. Plus d'informations sur
/etc/rc.conf sont disponibles sous forme de commentaires
à l'intérieur du fichier.
2.c. Noms et valeurs des variables
Le nom des variables est dynamique. En principe, il suit le schéma
variable_${interface|mac|essid|apmac}. Par exemple, la variable
dhcpcd_eth0 contient la valeur des options dhcpcd pour eth0 et
dhcpcd_essid contient la valeur des options dhcpcd pour quand une
interface se connecte à l'ESSID « essid ».
Cependant, il n'y a pas de règle pure et simple stipulant que les noms
d'interface doivent être de la forme ethX. En fait, de nombreuses interfaces
sans fil ont des noms tels que wlanX, raX ou encore ethX. Aussi, les interfaces
définies par l'utilisateur, telles que les ponts réseaux, peuvent avoir
n'importe quel nom, « foo » par exemple. Pour rendre la vie encore
plus intéressante, les bornes d'accès wifi peuvent avoir des noms qui
contiennent des caractères non alphanumériques (c'est important car vous pouvez
configurer les paramètres réseaux en fonction de l'ESSID)...
Le problème, dans tout ceci, c'est que Gentoo utilise des variables Bash pour
gérer le réseau... et Bash ne peut rien utiliser d'autre que les alphanumériques
anglais. Pour contourner cette limitation, nous transformons tout caractère qui
n'est pas un alphanumérique anglais en un souligné _.
Un autre problème de Bash est le contenu des variables : certains
caractères doivent être échappés. La parade est d'ajouter un antislash
\ devant chacun de ces caractères. Les caractères qui doivent
être échappés sont ", ' et \.
Dans cet exemple, nous utilisons un ESSID wifi car ils peuvent contenir un
ensemble plus large de caractères. Disons que nous devons utiliser l'ESSID
Mon "\ rézo :
Exemple de code 3.1 : exemple de nom de variable |
dns_domain_Mon____r_zo="Mon \"\\ rézo"
|
2.d. Nommage des interfaces réseau
Comment ça marche ?
Les noms des interfaces réseau ne sont pas choisis arbitrairement : le noyau Linux et le gestionnaire de périphériques (la plupart des système utilisent udev comme gestionnaire de périphériques bien que d'autres existent) choisissent le nom de l'interface en fonction de règles bien définies.
Quand une interface est détectée sur un système, le noyau Linux rassemble les données nécessaires sur cette carte. Ceci inclut :
-
le nom enregistré (sur l'interface elle-même) de la carte, qui sera par la suite noté comme étant le paramètre ID_NET_NAME_ONBARD ;
-
le connecteur sur lequel la carte est enfichée qui sera par la suite noté comme étant le paramètre ID_NET_NAME_SLOT ;
-
le chemin via lequel la carte est accessible, qui sera par la suite noté comme étant le paramètre ID_NET_NAME_PATH ;
-
l'adresse MAC (fournie par le fabricant) de la carte, qui sera par la suite noté comme étant le paramètre
the ID_NET_NAME_MAC ;
Sur la base de ces informations, le gestionnaire de périphériques décide du nom à attribuer à l'interface sur le système. Par défaut, il utilise le premier By default, il utilise le premier des paramètres cités ci-dessus qu'il rencontre. Par exemple, s'il rencontre ID_NET_NAME_ONBARD et que ce dernier vaut eno1, alors l'interface sera appelée eno1.
Si vous connaissez le nom de votre interface, vous pouvez lire les paramètres associès avec la commande udevadm:
Exemple de code 4.1 : lire les informations de la carte interface |
# udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0
|
Comme le premier paramètre rencontrés des trois paramètres est
ID_NET_NAME_PATH , c'est cette valeur qui est utilisée comme nom de l'interface. Si aucun paramètre n'est trouvé, le système en revient aux noms fournis par le noyau (eth0, eth1, etc.)
Utilisation du nommage traditionnel du noyau
Avant ce changement, les cartes interfaces réseau étaient nommées par le noyau Linux lui-même, selon l'ordre de chargement des pilotes (parmi d'autres, vraisemblablement plus obscures, raisons). Ce comportement peut toujours être activé en positionnant l'option de démarrage
net.ifnames=0 dans le chargeur de démarrage.
Une autre manière de désactiver ce comportement (et de revenir ainsi au nommage traditionnel par le noyau) est de créer une règle udev vide nommée
80-net-name-slot.rules qui écrasera alors la règle par défaut fournie (avec le même nom) ; règle qui prend en charge le nommage des interfaces réseau.
Exemple de code 4.2 : écraser le principe de nommage des interfaces réseau |
# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
|
Utilisation de vos propres noms
L'idée maîtresse à la base du changement du système de nommage n'est pas de semer la confusion dans l'esprit de l'utilisateur, mais de rendre les changements plus faciles. Supposons que vous ayez deux cartes d'interface appeléer eth0 et eth1. L'une est prévue pour l'accès au réseau par câble, tandis que l'autre est prévue pour un accès sans fil. Avec la prise en charge du nommage des interfaces, vous pouvez les appeler lan0 (câblée) et wifi0 (sans fil) - c'est mieux de ne pas utiliser les noms habituels tels que eth* et wlan* car ceux-ci peuvent encore entrer en conflit avec les noms que vous proposerez.
Tout ce que vous devez faire, c'est trouver les paramètres des cartes et utiliser cette information pour définir votre propre règle de nommage :
Exemple de code 4.3 : définir le nom lan0 pour l'interface courante eth0 |
# udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
# vim /etc/udev/rules.d/70-net-name-use-custom.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_MAC}=="enxc80aa9429d76", NAME="lan0"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"
|
Comme les règeles sont appelées avant la règle par défaut (elles sont en fait appelées par ordre alphabétique, ainsi 70 est appelée avant 80) les noms fournis par la règles seront utilisés à la place des noms fournis par défaut.
3. Les modules réseaux
3.a. Les modules réseaux
Nous utilisons à présent des scripts réseaux modulaires, c'est-à-dire que nous
pouvons facilement ajouter du support pour un nouveau type d'interface ou des
nouveaux modules de configuration tout en gardant une compatibilité avec les
anciens.
Par défaut, un module se charge si le paquet nécessaire à son utilisation est
installé. Si vous spécifiez ici un module dont le paquet n'est pas installé,
vous obtiendrez alors une erreur vous indiquant quel paquet doit être installé
pour utiliser ce module. Typiquement, cette configuration n'est à faire que si
vous avez installé plusieurs paquets qui fournissent le même service et si vous
en préférez un en particulier.
Note :
tous les réglages mentionnés ci-dessous se trouvent dans
etc/conf.d/net sauf mention contraire.
|
Exemple de code 1.1 : Choix des modules |
modules="ifconfig"
modules_eth0="pump"
modules="!iwconfig"
|
3.b. Outils de configuration d'interfaces réseau
Nous fournissons deux outils de configuration d'interfaces réseau
actuellement : ifconfig et iproute2. Vous avez besoin d'un
de ces deux outils pour pouvoir procéder à la configuration du réseau.
ifconfig est l'outil par défaut de Gentoo et est inclu dans le profil
« system ». iproute2 est un paquet bien plus puissant et plus
flexible, mais n'est pas inclus par défaut.
Exemple de code 2.1 : installer iproute2 |
# emerge sys-apps/iproute2
modules="ifconfig"
|
Puisqu'ifconfig et iproute2 font à peu près la même chose, nous
avons fait en sorte que la configuration de base fonctionne indifféremment avec
les deux modules. Par exemple, les deux extraits de code ci-dessous
fonctionnent quel que soit le module utilisé.
Exemple de code 2.2 : exemples avec ifconfig ou iproute2 |
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
|
3.c. DHCP
Le DHCP est un moyen d'obtenir les informations nécessaires à la configuration
du réseau (adresse IP, serveurs DNS, passerelle, etc.) depuis un serveur DHCP.
Cela signifie que si un serveur DHCP est actif sur le réseau, vous n'avez qu'à
indiquer à chaque client d'utiliser DHCP et ce dernier se débrouillera tout
seul. Cependant, vous aurez peut-être quelque chose à configurer (réseau sans
fil, liaison PPP ou autre) avant de pouvoir utiliser le DHCP.
Le DHCP peut être fourni par dhclient, dhcpcd ou pump.
Chaque module DHCP a ses avantages et ses inconvénients. Voici un rapide
résumé.
| Module DHCP |
Paquet |
Avantages |
Inconvénients |
| dhclient |
net-misc/dhcp |
Produit par ISC, ceux-là même qui font le serveur DNS Bind.
Très configurable.
|
La configuration est trop complexe.
L'application est vraiment énorme.
Ne récupère pas les serveurs NTP en DHCP.
N'envoie pas le nom de la machine au serveur par défaut.
|
| dhcpcd |
net-misc/dhcpcd |
C'est le client par défaut de Gentoo depuis longtemps.
Ne s'appuie pas sur d'autre outils.
Est maintenu par l'équipe Gentoo.
|
Parfois lent.
Reste lancé même si l'adresse IP est allouée « pour toujours ».
|
| pump |
net-misc/pump |
Léger.
Ne repose pas sur d'autres outils.
|
N'est plus maintenu par ses développeurs.
Pas fiable, en particulier au travers des modems.
Ne sait pas récupérer les informations NIS depuis DHCP.
|
Si vous avez plus d'un client DHCP installé, vous devez spécifier lequel
utiliser, sinon nous utiliserons dhcpcd s'il est disponible.
Pour faire passer des options spécifiques au module dhcp, utilisez
module_eth0="..." en changeant « module » par le nom
du module DHCP à utiliser. Par exemple : dhcpcd_eth0.
Nous essayons de garder la configuration du DHCP relativement indépendante du
module utilisé. Ainsi, voici la liste des commandes utilisables avec la variable
dhcp_eth0. Par défaut, aucune n'est exécutée.
-
release : rend l'adresse IP afin qu'elle puisse être réutilisée.
-
nodns : n'écrase pas le fichier /etc/resolv.conf.
-
nontp : n'écrase pas le fichier /etc/ntp.conf.
-
nonis : n'écrase pas le fichier /etc/yp.conf.
Exemple de code 3.1 : exemple de configuration DHCP dans /etc/conf.d/net |
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Note :
dhcpcd et pump envoient le nom actuel de la machine au serveur
DHCP par défaut donc vous n'avez plus besoin de le spécifier.
|
3.d. L'ADSL avec PPPoE/PPPoA
Installez tout d'abord le logiciel pour gérer l'ADSL.
Exemple de code 4.1 : installer le paquet ppp |
# emerge net-dialup/ppp
|
Ensuite, créez le script net PPP et le script net de l'interface Ethernet que
doit utiliser PPP :
Exemple de code 4.2 : créer les script net PPP et Ethernet |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Assurez-vous de définir rc_depend_strict à "YES" dans /etc/rc.conf.
Maintenant, éditez le fichier /etc/conf.d/net.
Exemple de code 4.3 : une configuration de base de PPPoE |
config_eth0=null
config_ppp0="ppp"
link_ppp0="eth0"
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_need_ppp0="net.eth0"
|
Vous pouvez également définir votre mot de passe dans /etc/ppp/pap-secrets.
Exemple de code 4.4 : exemple de fichier /etc/ppp/pap-secrets |
"nom_utilisateur" * "mot_de_passe"
|
Si vous utilisez PPPoE avec un modem USB, vous devez installer
br2684ctl. Lisez le fichier
/usr/portage/net-dialup/speedtouch-usb/files/README pour savoir
comment le configurer correctement.
Important :
lisez attentivement la section sur l'ADSL et PPP dans
/usr/share/doc/openrc-0.8.3-r1/net.example.bz2. I Elle contient des explications très
détaillées sur les réglages à votre disposition pour configurer votre PPP. Bien-entendu, remplacez 0.8.3-r1 par la version de OpenRC installée sur votre système.
|
3.e. APIPA (Adressage automatique d'adresse IP privée)
APIPA essaye de trouver une adresse libre dans l'intervalle
169.254.0.0-169.254.255.255 en faisant un requête arp sur une adresse au hasard sur
l'interface. S'il n'y a pas de réponse, alors l'adresse est assignée à cette
interface.
Cette méthode est utile pour les réseaux où il n'y a pas de serveur DHCP, où les
machines ne sont pas connectées directement à Internet et où tous les autres
ordinateurs utilisent APIPA.
Pour obtenir le support APIPA, installez net-misc/iputils ou
net-analyzer/arping.
Exemple de code 5.1 : configuration APIPA dans /etc/conf.d/net |
config_eth0="dhcp"
fallback_eth0="apipa"
config_eth0="apipa"
|
3.f. Agrégation de liens (Bonding)
Pour pouvoir faire de l'agrégation de liens (bonding, trunking), installez
net-misc/ifenslave.
L'agrégation de liens est utilisée pour augmenter la bande passante réseau. Si
vous avez deux cartes réseaux branchées sur le même réseau, vous pouvez les
fusionner afin que vos applications ne voient qu'une seule interface qui
utilise en réalité les deux cartes.
Exemple de code 6.1 : configurer une agrégation de liens dans /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0="null"
rc_need_bond0="net.eth0 net.eth1 net.eth2"
|
3.g. Pont réseau (« bridge » 802.1d)
Pour activer le support des ponts réseaux, installez
net-misc/bridge-utils.
Le pontage de réseaux est utilisé pour connecter plusieurs réseaux ensemble. Par
exemple, vous pourriez avoir un serveur qui se connecte à Internet via un modem ADSL et une carte réseau sans fil pour accéder à Internet à travers le modem ADSL. Vous pourriez créer un pont pour connecter les deux réseaux ensemble.
Exemple de code 7.1 : configuration d'un pont réseau dans /etc/conf.d/net |
brctl_br0="setfd 0" "sethello 0" "stp off"
bridge_br0="eth0 eth1"
config_eth0="null"
config_eth1="null"
config_br0="192.168.0.1/24"
rc_need_br0="net.eth0 net.eth1"
|
Important :
pour la configuration de certains ponts, vous pourriez avoir besoin de consulter
la documentation sur les noms des
variables.
|
3.h. Adresse MAC
Si vous en avez besoim, vous pouvez modifier l'adresse MAC de vos interfaces via les fichiers
de configuration réseau aussi :
Exemple de code 8.1 : exemples de modification d'adresse MAC |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. Les tunnels
Vous n'avez pas à installer quoi que ce soit pour créer des tunnels car l'outil
de configuration d'interfaces réseaux peut s'en charger.
Exemple de code 9.1 : configuration de tunnels dans /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0="192.168.0.2 peer 192.168.1.1"
|
3.j. VLAN (802.1q)
Pour activer le support des VLAN, installez net-misc/vconfig.
Un réseau virtuel (ou VLAN) est un groupe d'équipements réseaux qui agissent
comme s'ils se trouvaient sur un seul segment réseau, même si ce n'est pas le
cas. Les membres d'un VLAN peuvent uniquement voir les autres membres du même
VLAN, même s'ils sont physiquement sur le même réseau.
Exemple de code 10.1 : configuration de VLAN dans /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"
|
Important :
pour la configuration de certains VLAN, vous pourriez avoir besoin de consulter
la documentation sur les noms des
variables.
|
4. Les réseaux sans fil
4.a. Introduction
Faire fonctionner le réseau sans fil est en général assez direct sur Linux. Il y a deux manières de le configurer : les clients graphiques ou la ligne de commande.
Le moyen le plus facile est d'utiliser un client graphique, une fois que vous avez installé un environnement de bureau. La plupart des clients graphiques tels que wicd et NetworkManager, sont d'usage assez évident. Ils offrent une interface simple qui vous permet de configurer votre réseau en quelques secondes.
Note :
wicd possède une fonctionnalité de ligne de commande en plus de l'interface graphique principale. Vous pouvez l'obtenir en installant wicd avec l'option USE
ncurses. Cet utilitaire wicd-curses est particulièrement utile pour ceux qui n'utilisent pas un environnement de bureau basé sur gtk, mais désirent néanmoins un outil en ligne de commande facile qui ne requiert pas d'éditer des fichiers de configuration.
|
Néanmoins, si vous ne voulez pas utiliser un client graphique, vous pouvez configurer le sans fil en ligne de commande en éditant quelques fichiers de configuration. Ceci prend un peu plus de temps, mais demande moins de paquets à télécharger et installer. Comme les client graphiques sont d'usage évident (avec des écrans d'aide en page d'accueil) nous nous focaliserons sur la configuration en ligne de commande.
Vous pouvez configurer le réseau sans fil en ligne de commande en installant wireless-tools ou wpa_supplicant. La chose importante à se rappeler, c'est que vous configurez les réseaux sans fil globalement et non pas par interface.
wpa_supplicant est le meilleur choix mais il ne gère pas tous les
pilotes. Pour une liste des matériels supportés, lisez le site web de
wpa_supplicant.
wireless-tools supporte pratiquement toutes les cartes et tous les
pilotes, mais il ne sait pas se connecter aux points d'accès qui ne font que du
WPA. Si vos réseaux n'offrent que le chiffrage WEP ou sont complètement ouverts, il se peut que vous préfériez la simplicité de wireless-tools.
Attention :
le pilote linux-wlan-ng n'est pas supporté par baselayout pour le
moment, à cause de sa mise en place et de sa configuration qui est complètement
différente de ce qui se fait ailleurs. Des rumeurs émanant des développeurs de
linux-wlan-ng affirmeraient que leur procédure de mise en place se
conformerait à celle de wireless-tools. Lorsque ceci sera effectif, vous
pourrez utiliser linux-wlan-ng avec notre baselayout.
|
4.b. WPA Supplicant
WPA Supplicant est un
paquet qui vous permettra de vous connecter à un point d'accès WPA.
Exemple de code 2.1 : installer wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Important :
vous devez activer CONFIG_PACKET dans votre noyau pour que
wpa_supplicant puisse fonctionner.Essayer la commande grep CONFIG_PACKET
/usr/src/linux/.config pour savoir si c'est activé dans votre noyau.
|
Note :
selon les options USE , wpa_supplicant peut installer une interface graphique écrite en Qt4, qui s'intégrera parfaitement dans KDE. Pour l'avoir, exécutez echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use en tant qu'administrateur
root avant d'installer wpa_supplicant.
|
Nous devons maintenant indiquer dans le fichier /etc/conf.d/net
que nous préférons utiliser wpa_supplicant plutôt que
wireless-tools (si les deux sont installés, wireless-tools est l'interface par défaut).
Exemple de code 2.2 : configuration de /etc/conf.d/net pour wpa_supplicant |
modules="wpa_supplicant"
wpa_supplicant_eth0="-Dmadwifi"
|
Note :
si vous utilisez le pilote host-ap, vous devez placer la carte en mode
Managed afin qu'elle puisse être utilisée correctement par
wpa_supplicant. Vous pouvez utiliser la commande iwconfig_eth0="mode
managed" dans /etc/conf.d/net pour ce résultat.
|
Plutôt simple, n'est-ce pas ? Pourtant, nous devons encore configurer
wpa_supplicant lui-même, ce qui peut devenir bien plus fastidieux selon
le niveau de sécurité demandé par le point d'accès auquel vous souhaitez vous
connecter. L'exemple ci-dessous est repris puis adapté depuis le fichier
/usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz fourni avec
wpa_supplicant.
Exemple de code 2.3 : un exemple de fichier /etc/wpa_supplicant/wpa_supplicant.conf |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="simple"
psk="une phrase super secrete"
priority=5
}
network={
ssid="second ssid"
scan_ssid=1
psk="phrase tres secrete"
priority=2
}
network={
ssid="exemple"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="test-en-clair"
key_mgmt=NONE
}
network={
ssid="static-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="une phrase secrete"
}
|
4.c. Wireless Tools
Mise en place et mode « Managed »
Wireless
Tools fournit un moyen générique de configurer des interfaces sans fil
jusqu'au niveau de sécurité WEP. Bien que WEP soit une méthode faiblement
sécurisée, elle reste la plus répandue.
La configuration de Wireless Tools est contrôlée par quelques variables.
L'exemple de fichier de configuration ci-dessous devrait couvrir tous vos
besoins. Sachez simplement qu'en cas de non-configuration, nous essayons tout de
même de connecter l'interface au point d'accès le plus fort, quel qu'il soit.
Exemple de code 3.1 : installer wireless-tools |
# emerge net-wireless/wireless-tools
|
Note :
bien que vous puissiez stocker la configuration du réseau sans fil dans le
fichier /etc/conf.d/wireless, ce guide vous recommande de la placer
dans le fichier /etc/conf.d/net.
|
Exemple de code 3.2 : exemple de configuration /etc/conf.d/net avec iwconfig |
modules=( "iwconfig" )
key_ESSID1="[1] s:votrecle key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
preferred_aps="'ESSID1' 'ESSID2'"
|
Réglagesfins pour la sélection de points d'accès
Vous pouvez éventuellement rajouter des options pour affiner la sélection des
points d'accès. Ceci n'est pas indispensable.
Vous pouvez décider si nous devons nous connecter uniquement aux points d'accès
préférés ou pas. Par défaut, si tout ce qui a été configuré a échoué
et si nous pouvons nous connecter à un point d'accès non chiffré, alors nous le
ferons. Ce comportement peut être contrôlé par la variable
associate_order. Voici une table qui présente les valeurs acceptables et
à quoi elles servent.
| Valeur |
Description |
| any |
Comportement par défaut. |
| preferredonly |
Nous nous connecterons uniquement à un point d'accès présent dans la
liste.
|
| forcepreferred |
Nous forcerons la connexion à un point d'accès dans l'ordre listé si
ceux-ci ne sont pas trouvés lors d'un scan.
|
| forcepreferredonly |
Ne lance pas le scan. Essaye simplement de se connecter à l'un d'entre eux
dans l'ordre indiqué.
|
| forceany |
Pareil que forcepreferred puis essaie n'importe quel autre point
d'accès si cela n'a pas marché.
|
Enfin, voici les variables blacklist_aps et unique_ap.
blacklist_aps fonctionne d'une manière similaire à preferred_aps.
unique_ap attend yes ou no pour savoir si une deuxième
interface peut se connecter sur le même point d'accès que la première.
Exemple de code 3.3 : exemples pour liste noire (blacklist)_aps et unique_ap |
blacklist_aps="'ESSID3' 'ESSID4'"
unique_ap="yes"
|
Modes Ad-Hoc et Master
Vous pouvez aussi vous déclarer comme nœud Ad-Hoc si vous n'arrivez pas à
joindre un point d'accès.
Exemple de code 3.4 : se replier sur le mode Ad-Hoc |
adhoc_essid_eth0="Mon noeud Adhoc"
|
Et pourquoi pas se connecter à des réseaux Ad-Hoc ou bien tourner en mode Master
pour devenir nous-même un point d'accès ? Voici la configuration qu'il vous
faut. Vous aurez peut-être à spécifier des clés WEP comme indiqué précédemment.
Exemple de code 3.5 : exemple de configuration Ad-Hoc/Master |
mode_eth0="ad-hoc"
essid_eth0="Mon noeud adhoc"
channel_eth0="9"
|
Important :
ce qui suit est repris en l'état de la documentation
NetBSD sur WaveLAN. Il y a 14 canaux possibles. Nous avons été informés
que les canaux 1 à 11 sont légaux en Amérique du Nord, 1 à 13 dans une grande
partie de l'Europe, 10 à 13 en France et uniquement le 14 au Japon. En cas de
doute, consultez la documentation fournie avec la carte ou avec le point
d'accès. Assurez-vous que le canal choisi correspond à celui du point d'accès
(ou de l'autre carte en réseau Ad-Hoc). Par défaut, ce canal est le numéro 3
sur les cartes vendues en Amérique du Nord et dans une grande partie de
l'Europe, 11 en France et 14 au Japon).
|
Problèmes et résolutions concernant Wireless Tools
Il existe quelques variables supplémentaires que vous pouvez utiliser pour vous
aider à résoudre les problèmes de pilote ou d'environnement pour faire
fonctionner votre réseau sans fil. Voici une table répertoriant ce que vous
pouvez essayer :
| Variable |
Valeur par défaut |
Description |
| iwconfig_eth0 |
|
Lisez man iwconfig pour savoir ce qu'il est possible d'indiquer à
iwconfig.
|
| iwpriv_eth0 |
|
Lisez man iwpriv pour savoir ce qu'il est possible d'indiquer à
iwpriv.
|
| sleep_scan_eth0 |
0 |
Le nombre de secondes à attendre avant de lancer un scan. Cette commande est
requise lorsque le pilote a besoin de temps supplémentaire pour compléter
son activation et pour devenir utilisable.
|
| sleep_associate_eth0 |
5 |
Le nombre de secondes permis à l'interface pour qu'elle réussisse à
s'associer avec le point d'accès avant de passer au suivant.
|
| associate_test_eth0 |
MAC |
Certains pilotes n'assignent pas une adresse MAC invalide pendant qu'ils
essayent de se connecter.
Certains pilotes ne remettent pas à zéro le niveau de qualité pendant qu'ils
essayent se se connecter.
Les valeurs autorisées sont MAC, quality ou all, pour
les deux.
|
| scan_mode_eth0 |
|
Certains pilotes doivent scanner en mode Ad-Hoc. Donc si le scan échoue
systématiquement, essayez de spécifier ad-hoc ici.
|
| iwpriv_scan_pre_eth0 |
|
Envoie des commandes iwpriv à l'interface avant le scan.
Veuillez lire man iwpriv pour les détails.
|
| iwpriv_scan_post_eth0 |
|
Envoie des commandes iwpriv à l'interface après le scan.
Veuillez lire le man iwpriv pour les détails.
|
4.d. Spécifier une configuration réseau selon l'ESSID
Il se peut que lorsque vous vous connectez à ESSID1, vous ayez besoin
d'une adresse IP statique et que lorsque vous vous connectez à ESSID2,
vous vouliez du DHCP. En fait, on peut spécifier la plupart des variables selon
l'ESSID. Voici comment faire.
Note :
cela marche si vous utilisez WPA Supplicant ou Wireless Tools.
|
Exemple de code 4.1 : surcharger la configuration réseau selon l'ESSID |
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"
|
5. Ajout de fonctionnalités
4.a. Fonctions accrochables standard
Des points d'accroche sont prévus pour quatre fonctions, qui peuvent être définies par l'administrateur dans /etc/conf.d/net, et sont appelées
lors du démarrage/arrêt du réseau. Ces fonctions sont appelées en
spécifiant le nom de l'interface en premier, afin de pouvoir contrôler plusieurs
interfaces avec un même script.
La valeur renvoyée par les fonctions preup() et predown() doit
être 0 (succès) pour que la configuration ou la déconfiguration de l'interface
puisse continuer. Si preup() renvoie autre chose que zéro, alors la
configuration de l'interface sera annulée. Si predown() renvoie autre
chose que zéro, alors l'interface ne sera pas autorisée à être désactivée.
La valeur renvoyée par les fonctions postup() et postdown() n'ont
pas d'importance car il n'y a rien à faire après.
La variable ${IFACE} contient le nom de l'interface qui doit être activée
ou désactivée. La variable ${IFVAR} contient une version utilisable dans
un nom de variable Bash du nom de l'interface.
Exemple de code 1.1 : exemples de fonctions pre/post up/down |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
Note :
pour plus d'information sur la façon d'écrire vos propres fonctions accrochables, reportez-vous à
/usr/share/doc/openrc-*/net.example.bz2.
|
5.b. Fonction accrochables pour Wireless Tools
Note :
cela ne marchera pas avec WPA Supplicant, mais les variables ${ESSID} et
${ESSIDVAR} sont disponibles dans la fonction postup().
|
Des points d'accroche sont prévus pour deux fonctions, définies dans /etc/conf.d/net, qui sont appelées avant et après la connexion à un point
d'accès et peuvent être personnalisées. Les fonctions sont appelées en spécifiant
le nom de l'interface en premier afin de pouvoir contrôler plusieurs interfaces
avec la même fonction.
La valeur renvoyée par la fonction preassociate() doit être 0 pour
indiquer que la configuration ou la déconfiguration de l'interface peut
continuer. Si preassociate() renvoie autre chose que zéro, alors la
configuration de l'interface sera annulée.
La valeur renvoyée par la fonction postassociate() est ignorée, car il
n'y a plus rien à faire après.
La variable ${ESSID} contient le nom exact de l'ESSID du point d'accès
auquel on se connecte. ${ESSIDVAR} contient ce même nom, mais transformé
afin qu'il puisse être utilisé dans le nom d'une variable Bash.
Exemple de code 2.1 : exemples de fonctions pre/post association dans /etc/conf.d/net |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Note :
les variables ${ESSID} et ${ESSIDVAR} ne sont pas disponibles dans
les fonctions predown() et postdown().
|
Note :
pour plus d'information sur la façon d'écrire vos propres fonctions, reportez-vous à
/usr/share/doc/openrc-*/net.example.bz2.
|
6. Gestion du réseau
6.a. Gestion du réseau
Si votre ordinateur et vous êtes tout le temps en déplacement, cela signifie
qu'il n'y a pas tout le temps un câble réseau de branché sur votre carte réseau
ou un point d'accès sans fil prêt à vous accueillir. Aussi, vous pouvez
configurer le système pour que le réseau soit automatiquement activé dès qu'un
câble est branché ou dès qu'un point d'accès est disponible.
Voici quelques outils qui vous aideront à réaliser cela.
Note :
ce document ne parle que d'ifplugd, mais il existe d'autres alternatives
intéressantes, comme netplug. netplug est une alternative plus
légère à ifplugd mais il suppose que les pilotes réseau du noyau
fonctionnent correctement, ce qui n'est pas toujours le cas.
|
6.b. ifplugd
ifplugd est un
démon qui démarre et arrête les interfaces lorsqu'un câble Ethernet est branché
ou débranché. Il sait aussi détecter les associations à un point d'accès ou
lorsqu'un nouveau point d'accès devient disponible.
Exemple de code 2.1 : installer ifplugd |
# emerge sys-apps/ifplugd
|
La configuration d'ifplugd est vraiment très simple. Consultez man
ifplugd pour savoir quelles sont les variables utilisables dans le fichier
/etc/conf.d/net. Lisez également
/usr/share/doc/openrc-*/net.example.bz2 pour plus d'exemples.
Exemple de code 2.2 : exemple de configuration d'ifplugd |
ifplugd_eth0="..."
ifplugd_eth0="--api-mode=wlan"
|
En plus de gérer plusieurs connexions réseaux, vous pouvez utiliser un petit
utilitaire qui facilite la gestion des configurations DNS. C'est vraiment
pratique lorsque vous recevez votre adresse IP par DHCP. Installez simplement
openresolv.
Exemple de code 2.3 : installer openresolv |
# emerge openresolv
|
Voir man resolvconf pour mieux comprendre comment il fonctionne.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|