update-alternatives(8)

NOM
update-alternatives - maintenance des liens symboliques déterminant les noms par défaut de certaines commandes

SYNOPSIS
update-alternatives [options] commande

DESCRIPTION
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 postinst (configure) et prerm (install) des paquets Debian.

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ée 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 (voyez 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.

TERMINOLOGIE
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ériques 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, le lient alternatif est le lien qui détermine comment sont configurés les autres liens du groupe.

lien secondaire (« slave\ »)
    Un lien alternatif est un groupe de liens contrôlés par le réglage 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.

COMMANDES

--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 ses 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 --call 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 lien symbolique principal 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), vers quelle alternative le lien symbolique 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. Chaque ligne comporte jusqu'à trois champs (séparés par un 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, qui peut contenir des espaces).

--set-selections
    Lit la configuration des alternatives sur l'entrée standard, dans le format utilisé par update-alternatives --get-selections et les configure en conséquence.

--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 (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 permetde choisir interactivement laquelle doit être utilisée. Le groupe de liens est mis à jour.

--help
    Affiche un message d'aide puis quitte.

--version
    Affiche le numéro de version puis quitte.

OPTIONS

--altdir répertoire
    Donne le répertoire des alternatives, quand il est différent de celui par défaut.

--admindir répertoire
    Donne le répertoire administratif, quand il est différent de celui par défaut.

--log fichier
    Indique le fichier journal, pour utiliser un fichier différent du fichier par défaut (/var/log/dpkg.log).

--force
    Autorise update-alternatives à remplacer tout fichier installé à la place d'un lien d'alternative qui doit être créé.

--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.

--verbose
    produit plus de commentaires sur ce que fait update-alternatives.

--quiet
    Ne crée pas de commentaire à moins qu'une erreur ne survienne.

FICHIERS

/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

CODE DE SORTIE

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.

FORMAT DE REQUÊTE
Le format d'update-alternatives --query est un format à plat de type RFC822. Il est constitué de n+1 blocs où n est le nombre d'alternatives disponibles dans le groupe de liens interrogé. Le premier bloc contient les champs suivants\ :

Link: <lien>
    Nom générique de l'alternative.

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 aucun 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 blocs décrivent les alternatives disponibles dans le groupe de liens interrogé.

Alternative: <chemin de cette alternative>
    Chemin vers l'alternative de ce bloc

Priority: <valeur de la priorité>
    Valeur de la priorité alternative.

Replaces: <liste des liens secondaires>
    Lorsque cet en-tête est présent, la ligne suivante contient toutes les alternatives secondaires associées au lien principal de cette alternative, à raison d'une alternative secondaire par ligne. Chaque ligne comporte un espace, le nom de l'alternative secondaire, un espace et le chemin vers l'alternative secondaire.

Exemple
    $ update-alternatives --query editor
    Link: editor
    Status: auto
    Best: /usr/bin/vim.gtk
    Value: /usr/bin/vim.gtk
    Alternative: /bin/ed
    Priority: -100
    Slaves:
     editor.1.gz /usr/share/man/man1/ed.1.gz
    Alternative: /usr/bin/vim.gtk
    Priority: 50
    Slaves:
     editor.1.gz /usr/share/man/man1/vim.1.gz
     editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
     editor.pl.ISO8859-2.1.gz /usr/share/man/pl.ISO8859-2/man1/vim.1.gz
     editor.it.ISO8859-1.1.gz /usr/share/man/it.ISO8859-1/man1/vim.1.gz
     editor.pl.UTF-8.1.gz /usr/share/man/pl.UTF-8/man1/vim.1.gz
     editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
     editor.fr.UTF-8.1.gz /usr/share/man/fr.UTF-8/man1/vim.1.gz
     editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
     editor.it.UTF-8.1.gz /usr/share/man/it.UTF-8/man1/vim.1.gz
     editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
     editor.fr.ISO8859-1.1.gz /usr/share/man/fr.ISO8859-1/man1/vim.1.gz

DIAGNOSTICS
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.

EXEMPLES
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 super-utilisateur\ :

    update-alternatives --auto vi

BOGUES
Si vous trouvez un bogue, veuillez le signaler au système de suivi des bogues de Debian.

Si vous trouvez une discordance entre l'action de update-alternatives et cette page de manuel, c'est qu'il y a un bogue, soit dans l'implémentation soit dans la documentation\ ; faites un rapport.

AUTEURS
Copyright © 1995 Ian Jackson
Copyright © 2009 Raphaël Hertzog

Ce programme est un logiciel libre\ ; voyez la « GNU General Public Licence\ » version 2 ou supérieure pour le copyright. Il n'y a PAS de garantie.

Cette page de manuel est copyright 1997, 1998 Charles Briscoe-Smith et autres auteurs.

Cette documentation est libre\ ; voyez la « GNU General Public Licence\ » version 2 ou supérieure pour le copyright. Il n'y a PAS de garantie.

VOIR AUSSI
ln(1), FHS, le standard pour l'organisation du système de fichiers.

TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.