Voici la nouvelle version a commenter (y compris orthographiquement,
cette fois) :
7. Questions sur les alternatives
7.1. Le probl�me
7.2. La solution GNU
7.3. La solution Debian
7.4. update-alternatives, sa vie, son oeuvre
7.5. Les probl�mes avec update-alternatives
7.6. Et comment faire les r�glages pour chaque utilisateur ?
7. Questions sur les alternatives
---------------------------------
7.1. Le probl�me
----------------
Souvent, il existe plusieurs programmes qui rendent le m�me service,
et le choix de l'un ou de l'autre est une question personnelle. Par
exemple, pour visionner un fichier texte, on peut choisir `more',
`less' ou `most'. Ils permettent tous de faire plus ou moins la m�me
chose, mais ont un feeling diff�rent. Quand on les appelle
directement, le probl�me ne se pose pas, on prend celui qu'on veut,
mais comment dire � la commande 'man' qu'on veut qu'elle utilise tel
ou tel pager ?
7.2. La solution GNU
--------------------
La plupart des programmes GNU utilisent des variables d'environnement
pour ce genre de r�glage. Par exemple, si l'utilisateur fixe la
variable `EDITOR' � vim, c'est la commande vim qui sera invoqu�e
chaque fois qu'un programme GNU aura besoin de faire �diter un texte
(par exemple, la commande `crontab -e' utilise ce m�canisme).
La principale limite de cette approche est qu'elle demande de
modifier
tous les programmes clients pour qu'ils recherchent la bonne variable
d'environnement. Du plus, sauf erreur de ma part, ce m�canisme n'a
�t� mis en place que pour quelques fonctionnalit�s : `PAGER', qui
choisi le pager et `EDITOR', qui choisi l'�diteur. Si vous
connaissez
d'autres alternatives par variable d'environnement, n'h�sitez pas �
m'en faire part, je les mettrais ici. Mais quoi qu'il en soit, on
est
loin du nombre d'alternatives � la Debian, puisque sur mon syst�me,
je
n'en ai pas moins de 200...
7.3. La solution Debian
-----------------------
La solution Debian passe par les alternatives, qui habitent dans le
r�pertoire `/etc/alternatives', et une belle collection de
liens. Par
exemple, comme j'aime mieux le pager `less'', j'ai les liens suivants
sur ma machine:
/usr/bin/pager -> /etc/alternatives/pager -> /usr/bin/less
Comme ca, `man' n'a plus qu'a appeler la commande `pager', et le
programme `less' est automatiquement appel�.
Bien, cette r�ponse appelle une nouvelle question : pourquoi trois
liens ? La situation suivante permettrais de faire la m�me chose :
/usr/bin/pager -> /usr/bin/less
Oui, �a aurait le m�me effet, mais �a serait plus compliqu� �
administrer. Centraliser les alternatives dans un seul r�pertoire
permet de rendre coh�rent le syst�me. Ainsi, il est beaucoup plus
simple de savoir ce que le syst�me des alternatives propose, par un
simple `ls /etc/alternatives/', au lieu de fouiller sur tout le
disque
dur. De plus, si on travaille en r�seau, cela rend possible de
partager les binaires entre les machines par un montage nfs de `/usr'
tout en permettant � chaque machine d'avoir des r�glages sp�cifiques.
Enfin, cela permet d'�crire un script g�rant tout �a automatiquement.
Et m�me, ce script existe d�j�, il s'appelle `update-alternatives',
il
vient avec le paquet `dpkg' (et est donc d�j� sur votre machine), et
il n'est accessible qu'� root.
7.4. update-alternatives, sa vie, son oeuvre
--------------------------------------------
Ce programme est utile � la fois pour les paquets, qui l'utilisent
pour s'enregistrer comme fournisseurs de fonctionnalit�s, et pour
l'administrateur, qui l'utilise pour dire quels sont les programmes
par d�faut. Je ne m'attarde pas ici sur la premi�re partie, car,
c'est bien connu, ceux qui font des paquets Debian sont des surhommes
capables de tout, m�me de lire la page du manuel correspondante...
Pour l'administrateur, il faut savoir que chaque possibilit� de
l'alternative a une priorit� donn�e par le mainteneur du programme,
et
que donc, on peut tr�s bien laisser le syst�me se d�brouiller seul la
plupart du temps.
Il faut aussi citer l'existence de liens esclaves d'autres
alternatives. Typiquement, la page de manuel d�crivant l'�diteur est
un lien esclave de l'�diteur lui m�me. Comme �a, quand on dit que
l'�diteur est `vi', et qu'on fait `man editor', on voit la page de
`vi'.
Bien, reste � voir comment utiliser ce beau programme. Le plus
simple, c'est encore un bon vieux `update-alternatives --help' qui
donne les differentes facons de l'utiliser. Les seules qui
interressent l'administrateur (et non les mainteneurs) sont :
* `update-alternatives --auto <nom>' : Repasser en mode
automatique.
* `update-alternatives --display <nom>' : Voir la configuration
actuelle d'une alternative.
* `update-alternatives --config <nom>' : Modifier la configuration
d'une alternative (et basculer par la m�me en mode manuel, quand
�a marche, voir partie suivante).
Essayez l'option `--config', c'est beau � voir. L'architecture est
en
place pour un bel outil cliquable pour ceux qui veulent, reste plus
qu'� le faire...
Dernier point important auquel il me faut r�pondre : o� trouver la
liste des alternatives g�r�es par le syst�me ? Il suffit de faire un
`ls /etc/alternatives'. Bon, c'est vrai, �a ne montre que les
alternatives actuellement install�es sur votre machine, mais bon,
cela
devrait suffire � la plupart d'entre nous.
7.5. Les probl�mes avec update-alternatives
-------------------------------------------
Les vieilles versions de `dpkg' (ie, les versions ant�rieures � la
1.7.1 du 7 Novembre 2000, ce qui inclut celle de potato :) avaient
pas
mal de probl�mes avec `update-alternatives'. Par exemple, quand on
mettait a jour une alternative, elle n'�tait pas mise dans le mode
"manuel", et donc, a la mise � jour suivante, tout �tait � refaire.
De plus, les liens esclaves n'�taient pas non plus mis � jour. Tout
ceci g�che un peu l'int�r�t du syst�me, je vous l'accorde. Mais bon.
Cela n'en est pas moins la bonne m�thode de r�soudre le probl�me sous
Debian. Pour consoler les utilisateurs de potato, disons que c'est
la
m�thode d'avenir...
7.6. Et comment faire les r�glages pour chaque utilisateur ?
------------------------------------------------------------
C'est que la m�thode Debian est bien gentille, mais elle ne permet
que
de faire des r�glages par d�faut sur une machine, et non sur un
compte.
Il n'y a malheureusement pas encore de m�thode Debian de le faire,
mais on peut quand m�me s'en sortir facilement :
export PATH=$HOME/bin:$PATH
export MANPATH=$HOME/man:$MANPATH
Ensuite, il suffit de mettre des liens dans les repertoires bin et
man
correspondants, tout comme `update-alternatives' le fait dans
`/etc/alternatives'. On peut m�me r�ver que ce programme sera un
jour
accessible au commun des mortels (et pas seulement root), et qu'il
fera quelque chose du genre...
Voila, Mt.