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 <ariel.vardi@freesbee.fr>, 2002. Philippe
Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute
erreur à <debian-l10n-french@lists.debian.org>.