Comment définir les programmes par défaut à l’aide de update-alternatives sur les distributions basées sur Debian
Le plus souvent, sur notre système Linux, nous pouvons trouver deux ou plusieurs applications du même type installées : c’est généralement le cas des éditeurs de texte, mais nous pouvons aussi avoir plusieurs navigateurs web, par exemple. Cependant, la définition de l’application par défaut utilisée pour effectuer une tâche spécifique à l’échelle du système peut parfois être problématique. Pour résoudre ce problème, sur Debian et les distributions Linux basées sur Debian, nous pouvons utiliser le système alternatives et l’outil « update-alternatives ».
Dans ce tutoriel, nous voyons comment utiliser le système d’alternatives Debian et l’outil « update-alternatives » pour définir le programme par défaut pour un type d’application générique sur Debian et les distributions basées sur Debian.
Dans ce tutoriel, vous allez apprendre :
- Comment le système d’alternatives Debian est organisé
- Comment utiliser l’outil update-alternatives pour lister le groupe d’alternatives disponibles
- Comment lister toutes les alternatives pour un groupe et leurs priorités
- Comment changer l’alternative actuelle pour un groupe
- Comment créer un groupe personnalisé
- Comment supprimer une ou toutes les alternatives d’un groupe
| Catégorie | Exigences, conventions ou version du logiciel utilisé |
|---|---|
| Système | Distributions Linux basées sur Debian |
| Logiciel | mettre à jour les alternatives |
| Autre | Privilèges administratifs |
| Conventions | # – exige que les commandes linux données soient exécutées avec les privilèges root, soit directement en tant qu’utilisateur root, soit en utilisant la commande sudo $– exige que les commandes linux données soient exécutées en tant qu’utilisateur régulier non privilégié |
Comment fonctionne le système d’alternatives Debian
Le système alternatif Debian utilise essentiellement deux concepts : les noms de groupe et les liens symboliques. Prenons l’exemple du cas des éditeurs de texte. Même sur des configurations minimales, nous trouvons généralement plusieurs éditeurs de texte installés, entre autres, nano et vi.
Pour définir l’éditeur de texte système par défaut, le système alternatif Debian utilise un nom d’abstraction ou générique (« éditeur ») dans ce cas. Un fichier avec le nom générique/groupe, dans le répertoire /etc/alternatives, est un lien symbolique qui pointe vers l’application réelle qui est utilisée par défaut. L’éditeur de texte par défaut dans Debian est « nano » :
lrwxrwxrwx 1 root root 9 Jan 30 12:20 editor -> /bin/nanoComme vous pouvez le voir sur la sortie ci-dessus, à l’intérieur du répertoire /etc/alternatives, l’éditeur est un lien symbolique vers l’exécutable nano : /bin/nano. De plus, un lien symbolique vers le nom du groupe lui-même est généralement créé sous /usr/bin (/usr/bin/editor dans ce cas) : cela nous permet d’invoquer le nom générique comme s’il s’agissait d’une application réelle.
Cependant, lorsque nous voulons obtenir des informations sur les alternatives, ou les modifier, nous n’avons pas besoin de créer des liens symboliques manuellement. Ce que nous devons faire, à la place, c’est utiliser l’utilitaire update-alternatives. Voyons comment.
Liste de tous les groupes disponibles
Pour lister tous les groupes d’alternatives disponibles sur le système, il suffit d’invoquer « update-alternatives » avec l’option --get-selections :
update-alternatives --get-selectionsLa commande ci-dessus renvoie la sortie (tronquée) suivante :
arptables auto /usr/sbin/arptables-nft
awk auto /usr/bin/mawk
builtins.7.gz auto /usr/share/man/man7/bash-builtins.7.gz
cpp auto /usr/bin/cpp
default-GM.sf2 auto /usr/share/sounds/sf2/TimGM6mb.sf2
default-GM.sf3 auto /usr/share/sounds/sf2/TimGM6mb.sf2
desktop-background auto /usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg
desktop-background.xml auto /usr/share/desktop-base/active-theme/wallpaper/gnome-background.xml
desktop-grub auto /usr/share/desktop-base/active-theme/grub/grub-4x3.png
desktop-lockscreen.xml auto /usr/share/desktop-base/active-theme/lockscreen/gnome-background.xml
desktop-login-background auto /usr/share/desktop-base/active-theme/login/background.svg
desktop-plasma5-wallpaper auto /usr/share/desktop-base/active-theme/wallpaper
desktop-theme auto /usr/share/desktop-base/homeworld-theme
ebtables auto /usr/sbin/ebtables-nft
editor auto /bin/nano
[...]
Dans la première colonne, nous pouvons lire le nom du groupe, et dans la seconde, le « mode » dans lequel se trouve le groupe (nous y reviendrons plus tard) ; Dans la troisième colonne, la cible actuelle vers laquelle pointe le lien symbolique du groupe est indiquée.
Liste des alternatives disponibles pour un groupe
Pour lister les alternatives disponibles pour un groupe spécifique, tout ce que nous avons à faire est d’invoquer update-alternatives avec l’option --display, et de passer le nom du groupe en argument. Pour récupérer les alternatives possibles pour le groupe « éditeur », nous lancerions :
update-alternatives --display editorLa commande ci-dessus renvoie le résultat suivant :
editor - auto mode
link best version is /bin/nano
link currently points to /bin/nano
link editor is /usr/bin/editor
slave editor.1.gz is /usr/share/man/man1/editor.1.gz
slave editor.da.1.gz is /usr/share/man/da/man1/editor.1.gz
slave editor.de.1.gz is /usr/share/man/de/man1/editor.1.gz
slave editor.fr.1.gz is /usr/share/man/fr/man1/editor.1.gz
slave editor.it.1.gz is /usr/share/man/it/man1/editor.1.gz
slave editor.ja.1.gz is /usr/share/man/ja/man1/editor.1.gz
slave editor.pl.1.gz is /usr/share/man/pl/man1/editor.1.gz
slave editor.ru.1.gz is /usr/share/man/ru/man1/editor.1.gz
/bin/nano - priority 40
slave editor.1.gz: /usr/share/man/man1/nano.1.gz
/usr/bin/vim.tiny - priority 15
slave editor.1.gz: /usr/share/man/man1/vim.1.gz
slave editor.da.1.gz: /usr/share/man/da/man1/vim.1.gz
slave editor.de.1.gz: /usr/share/man/de/man1/vim.1.gz
slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
slave editor.ja.1.gz: /usr/share/man/ja/man1/vim.1.gz
slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
Dans la toute première ligne de la sortie, nous pouvons voir le mode dans lequel le groupe se trouve actuellement. Un groupe peut être dans deux modes : automatique (par défaut) ou manuel. Lorsqu’un groupe est en mode « auto », comme dans ce cas, le système alternatif décide automatiquement de la manière dont les liens sont mis à jour sur la base des priorités, lors de l’installation ou de la suppression de paquets. Dans ce cas, les alternatives pour le groupe « editor » sont « /bin/nano » et « /usr/bin/vim.tiny ». La première a une priorité plus élevée (40) que la seconde (15), elle est donc automatiquement sélectionnée comme alternative par défaut. Un groupe est mis en mode « manuel » après que l’administrateur système a effectué des modifications manuelles.
Pour visualiser uniquement le chemin des alternatives disponibles pour un groupe, sans autres informations, nous pouvons utiliser l’option --list :
update-alternatives --list editor
/bin/nano
/usr/bin/vim.tinyDéfinition de l’alternative actuelle pour un groupe
Définir l’alternative actuelle pour un groupe est vraiment facile. Nous pouvons effectuer une telle opération de manière interactive ou non interactive. Ce dernier est utile car il peut être scripté, tandis que le premier est plus convivial et nécessite la confirmation de l’utilisateur ; Voyons-les dans l’ordre.
Définition interactive d’une alternative actuelle de groupe
Pour changer une alternative pour un groupe de manière interactive, nous appelons update-alternatives avec l’option --config et passons le nom du groupe en argument. Lors de l’exécution d’une opération d’écriture, nous devons lancer la commande à l’aide de l’élévation de privilèges. Supposons que nous voulions définir vi comme éditeur par défaut (le choix sain), nous exécuterions :
sudo update-alternatives --config editorDès que nous lançons la commande, les options disponibles s’affichent, chacune associée à un numéro, et nous sommes invités à entrer celle correspondant à notre choix :
There are 2 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/vim.tiny 15 manual mode
Press to keep the current choice[*], or type selection number: 2
Dans ce cas, nous entrons « 2 ». Un message de confirmation s’affiche :
update-alternatives: using /usr/bin/vim.tiny to provide /usr/bin/editor (editor) in manual modeDéfinition non interactive de l’alternative de groupe actuelle
Si nous devons changer l’alternative actuelle pour un groupe directement, peut-être à partir d’un script, nous devons utiliser une autre option : --set. Dans ce cas, nous devons fournir le nom du groupe comme premier argument, et le chemin de l’alternative que nous voulons utiliser pour ce groupe comme le second. Si l’on s’en tient à l’exemple précédent, pour définir vi, qui sur debian est /usr/bin/vim.tiny, comme l’alternative actuelle pour le groupe « éditeur », nous exécuterions :
sudo update-alternatives --set editor /usr/bin/vim.tinyAjout d’un groupe personnalisé au système d’alternatives
En utilisant l’outil « update-alternative », nous pouvons créer des groupes personnalisés dans les systèmes alternatifs Debian. Pour effectuer une telle action, nous utilisons l’option --install et fournissons, dans l’ordre :
- Le chemin du lien maître à utiliser comme exécutable
- Le nom du lien symbolique tel qu’il doit apparaître dans le répertoire /etc/alternatives
- Le chemin de l’alternative
- La priorité de l’alternative
Clarifions cela à l’aide d’un exemple. Supposons que nous voulions créer un nouveau groupe appelé « python-editor » et que nous voulions définir « idle » (Python Integrated Development and Learning Environment) et Vim comme alternatives pour ce groupe, en donnant au premier une priorité plus élevée. Pour définir Idle comme alternative par défaut, nous exécuterions :
sudo update-alternatives --install /usr/bin/python-editor python-editor /usr/bin/idle 40Une fois que nous lançons la commande ci-dessus, si tout se passe comme prévu, le système répondra avec le message suivant :
update-alternatives: using /usr/bin/idle to provide /usr/bin/python-editor (python-editor) in auto modeLa commande a créé le lien maître /usr/bin/python-editor (premier argument), qui pointe vers le nom de fichier fourni (deuxième argument) à l’intérieur du répertoire /etc/alternatives :
Le fichier /etc/alternatives/python-editor est lui-même un lien qui pointe vers le « vrai » exécutable de l’alternative que nous choisissons (troisième argument) :
ls -l /etc/alternatives/python-editor
lrwxrwxrwx 1 root root 13 Jan 31 06:54 /etc/alternatives/python-editor -> /usr/bin/idleLa priorité attribuée à l’alternative est celle que nous avons fournie comme quatrième argument de la commande (40) :
python-editor - auto mode
link best version is /usr/bin/idle
link currently points to /usr/bin/idle
link python-editor is /usr/bin/python-editor
/usr/bin/idle - priority 40
Pour ajouter Vim comme alternative avec une priorité moindre, il suffit de répéter la commande avec les modifications appropriées :
sudo update-alternatives --install /usr/bin/python-editor python-editor /usr/bin/vim 30Suppression d’une ou de toutes les alternatives d’un groupe
Si, pour une raison quelconque, nous voulons supprimer une alternative d’un groupe, nous utilisons simplement « update-alternatives » avec l’option --remove, et fournissons le nom du groupe comme premier argument, et le chemin de l’alternative que nous voulons supprimer, comme le second. Pour supprimer l’alternative /usr/bin/vim du groupe « python-editor » que nous avons créé dans l’exemple précédent, nous exécuterions :
sudo update-alternatives --remove python-editor /usr/bin/vimPour supprimer toutes les alternatives existantes d’un groupe, nous devons utiliser l’option --remove-all, et passer uniquement le nom du groupe en argument :
sudo update-alternatives --remove-all python-editorLa suppression de toutes les alternatives d’un groupe entraîne la suppression du groupe lui-même, ainsi que de tous les liens symboliques associés.
Conclusions
Dans ce tutoriel, nous apprenons à utiliser le système d’alternatives Debian et l’utilitaire « update-alternatives » pour définir le programme par défaut pour un type d’application générique. Nous avons vu comment répertorier tous les groupes disponibles et toutes les alternatives associées avec leurs priorités, comment modifier l’alternative actuelle dans un groupe, comment créer et remplir un groupe personnalisé et, enfin, comment supprimer une ou toutes les alternatives d’un groupe.
