Introducción al comando de alternativas en Linux

Las abstracciones pueden ser útiles para los usuarios porque a muchos usuarios no les importa cómo su ordenador realiza una tarea siempre que esté enfocada. De hecho, incluso a las aplicaciones no siempre les importa cómo se hace algo, siempre que todas sus llamadas al sistema se respondan correctamente. En teoría, un administrador de sistemas de Linux puede sugerir muchas herramientas del sistema basadas en la función en lugar del nombre exacto del ejecutable, pero esto a menudo requiere una gran cantidad de enlaces simbólicos y seguimiento de versiones. A menos que este sea el caso, utilice el alternatives pedido.

el alternatives El orden nació como, curiosamente, una alternativa. Originalmente era una utilidad de conveniencia, escrita en Perl, del proyecto Debian Linux, llamada update-alternatives. Red Hat reescribió el comando sin Perl y se propagó a distribuciones basadas en Fedora, como Red Hat y CentOS, así como a otras distribuciones que recurren a Red Hat para la definición funcional de Linux Standard Base (LSB).

Índice

Cuándo usar el comando de alternativas

Un ejemplo simple y realista: tiene un comando en su sistema llamado em, que inicia un editor de texto simple. Ha sido el editor de referencia para su base de usuarios durante años, muchas personas han basado flujos de trabajo en torno a él y algunos mantienen configuraciones altamente personalizadas para él. Sin embargo, su base de usuarios le dejó en claro recientemente que ya no pueden sobrevivir sin la compatibilidad con emoji en sus editores de terminales y em no es compatible con Unicode.

Encuentra una bifurcación compatible con Unicode de em llamado nem, pero sabes que el 99% de tus usuarios están acostumbrados a em, tiene scripts que llaman em, y seguirá considerando cualquier solicitud de reemplazo como em no importa lo que hagas. La solución fácil a esta situación, y a muchos otros ejemplos similares, es designar al nuevo nem binario como alternativa preferida a em binario cuando el em se utiliza el comando.

La creación manual de un enlace simbólico puede parecer tentador, pero no resiste las actualizaciones de un administrador de paquetes ni está centralizado.

el alternatives El comando es más útil cuando se trata de nombres de aplicaciones "genéricos". Por supuesto, en el mundo de UNIX, "genérico" no siempre es más genérico que "Kleenex" o "Xerox" en el mundo real, por lo que términos como , , , y suelen estar entre los primeros en tener alternativas definidas para ellos. . Para términos realmente genéricos, como EDITOR y CC, el alternatives comando no se considera una solución adecuada. Para estos términos, porque son Variables de entorno y debe definirse en /etc Donde $HOME/.profile.

Crear una nueva alternativa

Continuando con el escenario de ejemplo de un viejo binario llamado em ser reemplazado por la nueva variante nem, es fácil crear una entrada alternativa. En este ejemplo, debe cambiar el nombre del comando original, aunque en otros casos esto no es necesario porque el comando no es exactamente lo que la gente piensa que es en primer lugar (java, por ejemplo, rara vez se encuentra en /usr/bin directamente). Si necesita cambiar el nombre de un binario, la forma correcta de hacerlo es en su archivo de especificaciones RPM, de modo que el RPM que instala el comando proporcione el binario con el nuevo nombre.

En un apuro, especialmente si está eliminando gradualmente el comando de todos modos, puede eliminar el comando de la administración de paquetes del sistema y simplemente mantener disponible una versión personalizada del comando anterior. /opt o similar.

Para este ejemplo, suponga que cambió el nombre del editor original em2 (indicando su último número de versión).

Ahora tiene dos binarios (em2 y nem) para asociar con un comando: em. Para ayudar a mantener claras las diferentes funciones de la terminología, suponga que em y nem ambos son microeditores de estilo de Emacs. En este caso, un término muy genérico para la alternativa que se está creando podría ser µemacs(usando el símbolo µ para significar "mic") o uemacs por simplicidad.

Cree una alternativa al original proporcionando:

  • una ubicación para el enlace simbólico "genérico"
  • un nombre para la alternativa (decidí uemacs, para aclarar que es un nombre de referencia en lugar de un binario específico)
  • el binario que se ejecutará cuando se llame a estos enlaces simbólicos
  • un nivel de prioridad para indicar qué alternativa se prefiere
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

Crea una alternativa para el nuevo binario, con alta prioridad porque es tu binario preferido:

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

Estos comandos crean un nuevo enlace simbólico, /usr/bin/em, apuntando a /etc/alternatives/em, que a su vez puede señalar /opt/em-legacy/em2 Donde /usr/local/bin/nem. La referencia humana a este conjunto de alternativas es uemacs, que fue elegido arbitrariamente por el administrador del sistema porque es descriptivo y memorable. Puede elegir el destino del enlace simbólico alternativo utilizando el --config opción:

$ 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

Eliminación de una alternativa

A veces, las alternativas son soluciones a largo plazo, y otras veces son solo para ayudar a los usuarios o administradores a pasar a algo nuevo. Si necesita eliminar una alternativa por alguna razón, puede hacerlo con el --remove-all opción, seguida del nombre "genérico" de la alternativa. En este ejemplo, es uemacs:

$ sudo alternatives --remove-all uemacs

Esto elimina todo sobre uemacs desde alternatives subsistema: el enlace simbólico en /usr/bin y /etc/alternatives. Si solo desea eliminar una opción de una alternativa, utilice el --remove opción, proporcionando el nombre alternativo (uemacs en este ejemplo) y la ruta de la opción que desea eliminar:

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

Alternativas

el alternatives El comando tiene muchas más funciones, incluida la capacidad de vincular simbólicamente componentes dependientes cuando se elige una alternativa específica. Además de manejar gran parte del trabajo pesado, alternatives centraliza tus inconsistencias. Puede verificar qué alternativas existen, para que no tenga que recordar día a día que emacs es de hecho emacs-26.3, donde java no es java-1.8 maíz /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0, etc.:

$ alternatives --list

Linux se trata de elección y flexibilidad, y la alternatives El comando es un ejemplo de cómo los usuarios y administradores pueden beneficiarse de un juego de manos inteligente.

Artículos de interés

Subir