update-alternatives - Maintenance des liens symboliques déterminant les
noms par défaut de certaines commandes
update-alternatives [
option...]
commande
update-alternatives crée, enlève, conserve et affiche des
informations concernant les liens symboliques qui forment le système
Debian des « alternatives ».
Il est possible d'installer, sur un même système et en même
temps, des programmes qui remplissent des fonctions identiques ou semblables.
Par exemple, beaucoup de systèmes installent plusieurs éditeurs
de texte en même temps. Cela permet à chaque utilisateur d'un
système de choisir, s'il le désire, un éditeur de texte
différent ; mais cela rend les choses difficiles pour le programme qui
doit choisir un bon éditeur de texte quand l'utilisateur n'a pas fait
de choix précis.
Le système Debian des « alternatives » essaie
de résoudre ce problème. Tous les fichiers qui proposent des
fonctions interchangeables se servent d'un nom générique qui se
trouve dans l'arborescence. Le système des
« alternatives » et l'administrateur
système font connaître ensemble le fichier qui est
réellement visé par ce nom générique. Par exemple,
si les éditeurs de texte
ed(1) et
nvi(1) sont tous les
deux installés, le système des
« alternatives » fait que le nom
générique
/usr/bin/editor renvoie par défaut
à
/usr/bin/nvi. L'administrateur système peut remplacer
cette assignation par
/usr/bin/ed et le système des
« alternatives » ne la changera pas tant qu'on ne
lui aura pas demandé explicitement de le faire.
Le nom générique n'est pas un lien symbolique direct vers
l'alternative choisie. C'est en fait un lien symbolique vers un nom
situé dans le
répertoire des
« alternatives », lequel nom est à son
tour un lien symbolique vers le fichier réellement visé. Les
modifications faites par l'administrateur système sont ainsi
confinées dans le répertoire
/etc ; le FHS (lisez-le)
donne de Bonnes Raisons de faire ainsi.
Chaque fois qu'un paquet, proposant un fichier pour une fonction
déterminée, est installé, modifié ou
désinstallé,
update-alternatives est appelé pour
mettre à jour les informations concernant ce fichier dans le
système des « alternatives ». En
général,
update-alternatives est appelé dans les
scripts suivants du responsable de paquet Debian,
postinst (configure)
pour installer l'alternative, et
prerm et
postrm (remove) pour
la supprimer. des paquets Debian.
Note : dans la plupart des cas
(sinon tous), aucune autre action d'un script de responsable ne devrait
appeler
update-alternatives, en particulier ni
upgrade ni
disappear, parce tout autre action de ce type peut perdre l'état
manuel d'une alternative ou inverser l'alternative temporairement ou
complètement intervertir les alternatives si plusieurs ont la
même priorité.
Il est souvent utile de synchroniser certaines alternatives, de manière
à pouvoir les manipuler globalement ; par exemple, quand plusieurs
versions de
vi(1) sont installées, la page de manuel qui est
visée par
/usr/share/man/man1/vi.1 devrait correspondre à
/usr/bin/vi.
update-alternatives gère ce problème
avec les liens
principaux (« master ») et
les liens
secondaires (« slave »). Quand le
lien principal est changé, tous les liens secondaires associés
sont changés. Un lien principal et ses liens secondaires
associés composent un
groupe de
liens.
À tout moment, un groupe de liens est dans l'un des deux modes
suivants : automatique ou manuel. Quand un groupe est dans le mode
automatique et que des paquets sont installés ou
désinstallés, le système des
« alternatives » décide automatiquement
s'il doit mettre à jour les liens et comment le faire. Dans le mode
manuel, le système des « alternatives » ne
change pas les liens et laisse l'administrateur système prendre toutes
les décisions (sauf si quelque chose est cassé).
Un groupe de liens est en mode automatique quand il est créé sur
un système pour la première fois. Quand l'administrateur
système modifie le paramétrage automatique du système,
update-alternatives le remarquera la prochaine fois qu'il sera
lancé pour ce groupe aux liens modifiés et il fera passer ce
groupe en mode manuel.
À chaque alternative est associée une
priorité.
Quand un groupe de liens est en mode automatique, l'alternative visée
par les éléments du groupe est celle qui possède la
priorité la plus élevée.
Quand l'option
--config est utilisée,
update-alternatives
affiche toutes les possibilités du groupe pour lequel
nom est le
lien principal. Le choix actuel est noté par un
« * ». Il sera alors demandé quel choix
doit être fait pour ce groupe. Suivant le choix effectué, le
groupe de liens peut ne plus être en mode
auto. Il vous faudra
utiliser l'option
--auto pour revenir au mode automatique (ou
réutiliser
--config et choisir l'entrée marquée
comme automatique).
Si vous voulez configurer de manière non interactive, vous pouvez
utiliser l'option
--set (voir ci-dessous).
Les différents paquets qui fournissent un même fichier doivent le
faire en
collaborant. En d'autres termes, l'utilisation de
update-alternatives est
obligatoire pour tous les paquets qui
sont dans ce cas et il n'est pas possible de remplacer un fichier d'un paquet
qui n'utilise pas le mécanisme offert par
update-alternatives.
Comme les opérations de
update-alternatives sont très
compliquées, voici quelques termes qui faciliteront l'explication.
- nom générique (ou lien alternatif)
- C'est un nom, par exemple /usr/bin/editor, qui
renvoie, à travers le système des
« alternatives », à l'un des fichiers
qui remplissent des fonctions similaires.
- nom alternatif
- Nom d'un lien symbolique dans le répertoire des
alternatives.
- alternative (ou chemin alternatif)
- C'est le nom d'un fichier particulier dans l'arborescence ;
il peut être accessible avec un nom générique
grâce au système d'alternatives.
- répertoire des alternatives
- C'est le répertoire qui contient les liens
symboliques ; il s'agit par défaut de
/etc/alternatives.
- répertoire administratif
- C'est le répertoire qui contient des renseignements
sur l'état de update-alternatives. Il s'agit par
défaut de /var/lib/dpkg/alternatives.
- groupe de liens
- C'est un ensemble de liens symboliques
corrélés, de manière qu'on puisse les mettre à
jour en une seule fois.
- lien principal
- Dans un groupe de liens, c'est le lien alternatif qui
détermine comment sont configurés les autres liens du
groupe.
- lien secondaire
(« slave »)
- Dans un groupe de liens, c'est un lien alternatif
contrôlé par la configuration du lien principal.
- mode automatique
- Quand un groupe de liens est en mode automatique, le
système des « alternatives » assure que
les liens dans le groupe pointent vers l'alternative possédant la
priorité la plus élevée dans ce groupe.
- mode manuel
- Quand un groupe de liens est en mode manuel, le
système des « alternatives » ne modifie
pas le paramétrage de l'administrateur système.
-
--install lien nom chemin priorité
[--slave lien nom chemin]...
- Ajoute un groupe d'alternatives au système.
lien est le nom générique du lien principal,
nom est le nom de son lien symbolique, et chemin est
l'alternative présentée pour le lien principal. Les
paramètres qui suivent --slave sont le nom
générique, le lien symbolique dans le répertoire des
alternatives et l'alternative pour un lien secondaire. On peut indiquer
zéro ou plusieurs options --slave, chacune suivie par trois
paramètres. L'alternative principale doit exister, sinon la
commande échouera. Cependant, si une alternative secondaire
n'existe pas, le lien secondaire ne sera simplement pas installé
(mais un avertissement sera affiché). Si un fichier existe à
l'emplacement où l'alternative doit être installée,
il est conservé sauf si --force est utilisé.
Quand le lien principal spécifié existe déjà
dans les enregistrements du système des
« alternatives », les renseignements fournis
sont ajoutés dans un nouvel ensemble d'alternatives pour le groupe.
Sinon, un nouveau groupe contenant ces informations est ajouté et
mis en mode automatique. Quand un groupe est en mode automatique, et que
la priorité des alternatives nouvellement ajoutées est
supérieure à celle de toutes les alternatives
installées dans ce groupe, les liens symboliques sont mis à
jour et pointent vers les alternatives nouvellement ajoutées.
-
--set nom chemin
- Ajoute le programme chemin comme alternative pour
nom. C'est équivalent à --config mais ce n'est
pas interactif et on peut donc écrire un script.
-
--remove nom chemin
- Enlève une alternative et tous les liens secondaires
associés. nom est un nom dans le répertoire des
« alternatives », et chemin est un nom
de fichier auquel nom peut être lié. Quand nom
est en effet lié à chemin, nom est mis
à jour et pointe vers une autre alternative adéquate ou bien
est enlevé s'il n'y en a pas d'autre. De même, les liens
secondaires associés sont mis à jour ou enlevés.
Quand le lien ne pointe pas déjà sur chemin, aucun
lien n'est modifié ; seules les informations sur l'alternative sont
supprimées.
-
--remove-all nom
- Supprime toutes les alternatives et tous les liens
secondaires associés. nom est un nom dans le
répertoire des alternatives.
- --all
- Utilise --config sur toutes les alternatives. Cette
option peut être combinée avec --skip-auto pour
revoir et configurer toutes les alternatives qui ne sont pas en mode
automatique. Les alternatives erronées sont aussi affichées.
Ainsi, une méthode simple pour corriger les alternatives
cassées est d'utiliser yes '' | update-alternatives --force
--all.
-
--auto nom
- Passe le groupe de liens suivant l'alternative de
nom en mode automatique. En même temps, le lien symbolique
principal et ses liens secondaires sont mis à jour et pointent vers
les alternatives avec les priorités les plus
élevées.
-
--display nom
- Affiche des renseignements sur le groupe de liens.
L'information affichée comprend le mode du groupe (auto ou manuel),
les liens principal et secondaires, vers quelle alternative le lien
principal pointe actuellement, quelles autres alternatives sont
disponibles (et les liens secondaires associés), et l'alternative
actuellement installée qui possède la priorité la
plus élevée.
- --get-selections
- Affiche tous les noms principaux d'alternatives (ceux qui
contrôlent un groupe de liens) ainsi que leur état (depuis
la version 1.15.0). Chaque ligne comporte jusqu'à trois champs
(séparés par une ou plusieurs espaces). Le premier est le
nom de l'alternative, le second est son état ( auto ou
manual) et le dernier montre le choix actuel pour l'alternative (il
s'agit d'un nom de fichier et donc peut contenir des espaces).
- --set-selections
- Lit la configuration des alternatives sur l'entrée
standard, dans le format utilisé par --get-selections et les
configure en conséquence (depuis la version 1.15.0).
-
--query nom
- Affiche des informations sur le groupe de liens de
manière analogue à --display, mais sous une forme qui
peut être analysée automatiquement (depuis la version
1.15.0, voir la section FORMAT DE REQUÊTE ci-dessous).
-
--list nom
- Affiche toutes les cibles du groupe de liens.
-
--config nom
- Affiche les alternatives disponibles pour un groupe de
liens et permet de choisir interactivement laquelle doit être
utilisée. Le groupe de liens est mis à jour.
- --help
- Afficher un message d'aide puis quitter.
- --version
- Afficher le numéro de version puis quitter.
-
--altdir répertoire
- Donne le répertoire des alternatives, quand il est
différent de celui par défaut. Il s'agit par défaut
de « /etc/alternatives ».
-
--admindir répertoire
- Donne le répertoire administratif, quand il est
différent de celui par défaut. C'est par défaut
« /var/lib/dpkg/alternatives» si
DPKG_ADMINDIR n'a pas été défini.
-
--instdir répertoire
- Définit le répertoire d'installation qui
désigne le répertoire où les paquets sont
installés (depuis dpkg 1.19.2). Par défaut, c'est
« / » si DPKG_ROOT n'a pas
été défini.
-
--root répertoire
- Indique le répertoire racine (depuis la
version 1.20.1). Cela définit aussi les répertoires
des alternatives, d'installation et d'administration qui correspondent.
Par défaut, c'est « / » si
DPKG_ROOT n'a pas été défini.
-
--log fichier
- Indique le fichier journal (depuis la version 1.15.0), pour
utiliser un fichier différent du fichier par défaut
(/var/log/alternatives.log).
- --force
- Autorise le remplacement ou la suppression de tout fichier
installé à la place d'un lien d'alternative qui doit
être créé ou supprimé.
- --skip-auto
- Passe l'invite de configuration pour les alternatives qui
sont correctement configurées en mode automatique. Cette option
n'est pertinente qu'avec --config ou --all.
- --quiet
- Ne crée pas de commentaire à moins qu'une
erreur ne survienne.
- --verbose
- Produit plus de commentaires sur ce qui est fait.
- --debug
- Produit plus de commentaires, utiles pour le
débogage, sur ce qui est fait (depuis la version 1.19.3).
- 0
- L'action demandée s'est correctement
déroulée.
- 2
- Des problèmes sont survenus lors de l'analyse de la
ligne de commande ou bien pendant l'exécution de l'action.
- DPKG_ROOT
- Si cette variable est positionnée et que les options
--admindir ou --root ne sont pas précisées, ce
répertoire sera utilisé comme répertoire racine du
système de fichiers.
- DPKG_ADMINDIR
- Si cette variable est positionnée et que l'option
--admindir n'est pas précisée, ce répertoire
sera utilisé comme répertoire de base pour
l'administration.
- /etc/alternatives/
- Le répertoire des
« alternatives » par défaut. Peut
être remplacé avec l'option --altdir.
- /var/lib/dpkg/alternatives/
- Le répertoire administratif par défaut. Peut
être remplacé avec l'option --admindir
Le format de
--query est un format à plat de type RFC822. Il est
constitué de
n + 1 paragraphes où
n est le
nombre d'alternatives disponibles dans le groupe de liens interrogé. Le
premier paragraphe contient les champs suivants :
-
Name: nom
- Nom de l'alternative dans le répertoire des
alternatives.
-
Link: lien
- Nom générique de l'alternative.
-
Slaves: liste-des-liens-secondaires
- Lorsque cet en-tête est présent, les lignes
suivantes contiennent tous les liens secondaires associés au
lien principal de cette alternative, à raison d'un lien secondaire
par ligne. Chaque ligne comporte une espace, le nom de l'alternative
secondaire, une espace et le chemin vers le lien secondaire.
-
Status: état
- État de l'alternative (auto ou
manual).
-
Best: meilleur-choix
- Chemin de la meilleure alternative pour ce groupe de liens.
N'est pas présent si aucune alternative n'est disponible.
-
Value: alternative-actuellement-choisie
- Chemin de l'alternative actuellement choisie. Peut aussi
prendre la valeur spéciale none, utilisée si le lien
n'existe pas.
Les autres paragraphes décrivent les alternatives disponibles dans le
groupe de liens interrogé.
-
Alternative: chemin-de-cette-alternative
- Chemin vers l'alternative de ce paragraphe.
-
Priority: valeur-de-la-priorité
- Valeur de la priorité de cette alternative.
-
Slaves: liste-des-liens-secondaires
- Lorsque ce champ est présent, les lignes
suivantes contiennent toutes les alternatives secondaires
associées au lien principal de cette alternative, à raison
d'une alternative secondaire par ligne. Chaque ligne comporte une espace,
le nom de l'alternative secondaire, une espace et le chemin vers
l'alternative secondaire.
$ update-alternatives --query editor
Name: editor
Link: /usr/bin/editor
Slaves:
editor.1.gz /usr/share/man/man1/editor.1.gz
editor.fr.1.gz /usr/share/man/fr/man1/editor.1.gz
editor.it.1.gz /usr/share/man/it/man1/editor.1.gz
editor.pl.1.gz /usr/share/man/pl/man1/editor.1.gz
editor.ru.1.gz /usr/share/man/ru/man1/editor.1.gz
Status: auto
Best: /usr/bin/vim.basic
Value: /usr/bin/vim.basic
Alternative: /bin/ed
Priority: -100
Slaves:
editor.1.gz /usr/share/man/man1/ed.1.gz
Alternative: /usr/bin/vim.basic
Priority: 50
Slaves:
editor.1.gz /usr/share/man/man1/vim.1.gz
editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
Avec l'option
--verbose,
update-alternatives affiche de
très nombreuses informations sur la sortie standard. Quand un
problème survient,
update-alternatives envoie des messages
d'erreur sur la sortie d'erreur standard et retourne un état de sortie
égal à
2. Ces diagnostics devraient être simples
à comprendre ; si ce n'est pas le cas, veuillez envoyer un rapport de
bogue.
Plusieurs paquets fournissent un éditeur de texte compatible avec
vi, par exemple
nvi et
vim. Celui qui sera utilisé
est déterminé par le groupe de liens
vi, qui comprend des
liens pour le programme lui-même et sa page de manuel.
Pour afficher les paquets disponibles qui fournissent
vi et son
paramétrage actuel, on peut utiliser l'action
--display :
update-alternatives --display vi
Pour choisir une implémentation particulière de
vi, on peut
utiliser cette commande en tant que superutilisateur et choisir un nombre dans
la liste :
update-alternatives --config vi
Pour retrouver l'implémentation par défaut de
vi, on peut
utiliser cette commande en tant que superutilisateur :
update-alternatives --auto vi
ln(1), FHS (le standard pour l'organisation du système de
fichiers).
Ariel VARDI <
[email protected]>, 2002. Philippe Batailler, 2006.
Nicolas François, 2006. Veuillez signaler toute erreur à
<
[email protected]>.