GNU/Linux >> Tutoriels Linux >  >> Linux

Introduction à la commande alternatives sous Linux

Les abstractions peuvent être utiles aux utilisateurs, car de nombreux utilisateurs ne se soucient pas de la manière dont leur ordinateur accomplit une tâche tant qu'elle est ciblée. En fait, même les applications ne se soucient pas toujours de savoir comment quelque chose est réalisé tant que tous ses appels système reçoivent une réponse correcte. En théorie, un administrateur système Linux peut proposer de nombreux outils système en fonction de la fonction plutôt que du nom exact de l'exécutable, mais cela nécessite souvent beaucoup de liens symboliques et de suivi des versions. Sauf si c'est le cas, vous utilisez les alternatives commande.

Les alternatives le commandement a commencé sa vie comme, curieusement, une alternative. À l'origine, il s'agissait d'un utilitaire pratique, écrit en Perl, du projet Debian Linux, appelé update-alternatives . Red Hat a réécrit la commande sans Perl, et elle a été propagée dans les distributions basées sur Fedora telles que Red Hat et CentOS, ainsi que dans d'autres distributions qui se tournent vers Red Hat pour la définition fonctionnelle de Linux Standard Base (LSB).

Quand utiliser la commande alternatives

Un exemple simple et réaliste :vous avez une commande sur votre système appelée em , qui lance un simple éditeur de texte. C'est l'éditeur incontournable de votre base d'utilisateurs depuis des années, de nombreuses personnes ont basé des flux de travail autour de lui et certains maintiennent des configurations hautement personnalisées pour lui. Cependant, votre base d'utilisateurs vous a récemment fait comprendre qu'ils ne peuvent plus survivre sans la prise en charge des emoji dans leurs éditeurs de terminaux et em ne prend pas en charge Unicode.

Vous trouvez un fork Unicode de em appelé nem , mais vous savez que 99 % de vos utilisateurs sont habitués à em , ont des scripts qui appellent em , et continuera à considérer toute application de remplacement comme em peut importe ce que vous faites. La solution facile à cette situation, et à de nombreux autres exemples similaires, consiste à désigner le nouveau nem binaire comme alternative préférée au em binaire quand le em commande est utilisée.

La création manuelle d'un lien symbolique peut sembler tentante, mais cela ne résiste pas aux mises à jour d'un gestionnaire de packages et n'est pas non plus centralisé.

Les alternatives La commande est la plus utile lors de la gestion des noms d'application "génériques". Bien sûr, dans le monde UNIX, "générique" n'est pas toujours générique, pas plus que "Kleenex" ou "Xerox" ne l'est dans le monde réel, donc des termes comme java , (x)emacs(-nox) , (n)vi(m) , whois , et iptables sont souvent parmi les premiers à voir des alternatives définies pour eux. Pour les termes vraiment génériques, comme EDITOR et CC , les alternatives commande n'est pas considérée comme une solution appropriée. Pour ces termes, car ce sont des variables d'environnement et doivent être définis dans /etc ou $HOME/.profile .

Créer une nouvelle alternative

Continuer avec l'exemple de scénario d'un ancien binaire appelé em étant supplanté par la nouvelle variante nem , il est facile de créer une entrée alternative. Dans cet exemple, vous devez renommer la commande d'origine, bien que dans d'autres cas, cela ne soit pas nécessaire car la commande n'est pas exactement ce que les gens pensent qu'elle est en premier lieu (java , par exemple, est rarement situé dans /usr/bin directement). Si vous avez besoin de changer le nom d'un binaire, la bonne façon de le faire est dans son fichier de spécification RPM, de sorte que le RPM installant la commande fournisse le binaire sous le nouveau nom.

À la rigueur, surtout si vous supprimez progressivement la commande de toute façon, vous pouvez supprimer la commande de la gestion des packages du système et conserver simplement une version personnalisée de l'ancienne commande disponible /opt ou similaire.

Pour cet exemple, supposons que vous avez renommé l'éditeur d'origine em2 (indiquant son dernier numéro de version).

Vous avez maintenant deux binaires (em2 et nem ) à associer à une seule commande :em . Pour aider à garder les différents rôles de la terminologie clairs, supposez que em et nem sont tous deux des éditeurs de style micro Emacs. Dans ce cas, un terme très générique pour l'alternative en cours de création pourrait être µemacs (en utilisant le symbole µ pour signifier "micro") ou uemacs pour plus de simplicité.

Créez une alternative à l'original en fournissant :

  • un emplacement pour le lien symbolique "générique"
  • un nom pour l'alternative (j'ai choisi uemacs , pour préciser qu'il s'agit d'un nom de référence plutôt que d'un binaire spécifique)
  • le binaire à exécuter lorsque ces liens symboliques sont appelés
  • un niveau de priorité pour indiquer quelle alternative est préférée
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

Créez une alternative pour le nouveau binaire, avec une priorité élevée car c'est votre binaire préféré :

$ sudo alternatives --install /usr/bin/em uemacs /usr/local/bin/nem 99

Ces commandes créent un nouveau lien symbolique, /usr/bin/em , pointant vers /etc/alternatives/em , que vous pouvez à votre tour pointer vers soit /opt/em-legacy/em2 ou /usr/local/bin/nem . La référence conviviale à cet ensemble d'alternatives est uemacs , qui a été choisi arbitrairement par l'administrateur système car il est descriptif et mémorisable. Vous pouvez choisir la destination du lien symbolique alternatif en utilisant le --config choix :

$ sudo alternatives --config uemacs
[sudo] password for seth: 

There are 2 programs which provide 'uemacs'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/local/bin/nem
   2           /opt/em-legacy/em2

Supprimer une alternative

Parfois, les alternatives sont des solutions à long terme, et d'autres fois, elles servent simplement à aider les utilisateurs ou les administrateurs à passer à quelque chose de nouveau. Si vous avez besoin de supprimer une alternative pour une raison quelconque, vous pouvez le faire avec le --remove-all option, suivi du nom "générique" de l'alternative. Dans cet exemple, c'est uemacs :

$ sudo alternatives --remove-all uemacs

Cela supprime tout ce qui concerne uemacs parmi les alternatives sous-système :le lien symbolique dans /usr/bin et /etc/alternatives . Si vous ne souhaitez supprimer qu'un seul choix d'une alternative, utilisez le --remove option, en fournissant le nom alternatif (uemacs dans cet exemple) et le chemin du choix que vous souhaitez supprimer :

$ sudo alternatives --remove uemacs /opt/em-legacy/em2

Alternatives

Les alternatives La commande a beaucoup plus de fonctionnalités, y compris la possibilité de lier symboliquement des composants dépendants lorsqu'une alternative spécifique est choisie. En plus de gérer une grande partie du travail lourd, alternatives centralise vos incohérences. Vous pouvez vérifier quelles alternatives sont en place, vous n'avez donc pas à vous rappeler au jour le jour que emacs est en fait emacs-26.3 , ou que java n'est pas java-1.8 mais /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 , et ainsi de suite :

$ alternatives --list

Linux est une question de choix et de flexibilité, et les alternatives est un exemple de la façon dont les utilisateurs et les administrateurs peuvent bénéficier d'un tour de passe-passe astucieux.

Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.


Linux
  1. Une introduction à l'utilisation de tcpdump sur la ligne de commande Linux

  2. Introduction à la commande Linux chmod

  3. Introduction à la commande Linux chown

  4. Maîtrisez la commande Linux ls

  5. La commande locate sous Linux

La commande timer sous Linux

La commande Linux curl

Exemples essentiels de la commande ps sous Linux

Qu'est-ce que la commande kill sous Linux ?

Comprendre la commande time sous Linux

Utilisation de la commande grep sous Linux