[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

FAQ sur les alternatives: round II



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.



Reply to: