GNU/Linux >> Tutoriales Linux >  >> Linux

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 computadora logra una tarea siempre que esté en el objetivo. De hecho, incluso a las aplicaciones no siempre les importa cómo se logra algo, siempre que todas sus llamadas al sistema se respondan correctamente. En teoría, un administrador de sistemas de Linux puede ofrecer muchas herramientas del sistema según la función en lugar del nombre exacto del ejecutable, pero eso a menudo requiere muchos enlaces simbólicos y seguimiento de versiones. A menos que sea así, utilice las alternatives comando.

Las alternatives comando comenzó su vida como, curiosamente, una alternativa. Originalmente, esta 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 través de distribuciones basadas en Fedora, como Red Hat y CentOS, así como otras distribuciones que recurren a Red Hat para la definición funcional de Linux Standard Base (LSB).

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 acceso 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 ha dejado claro recientemente que no pueden sobrevivir más tiempo sin la compatibilidad con emoji en sus editores de terminal y em no es compatible con Unicode.

Encuentra una bifurcación habilitada para Unicode de em llamado nem , pero sabe que el 99% de sus usuarios están acostumbrados a em , tiene scripts que llaman a em y seguirá pensando en cualquier aplicación 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 el nuevo nem binario como la alternativa preferida al em binario cuando el em se utiliza el comando.

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

Las alternatives El comando es más útil cuando se administran nombres de aplicaciones "genéricos". Por supuesto, en el mundo UNIX, "genérico" no siempre es genérico más de lo que "Kleenex" o "Xerox" lo son en el mundo real, por lo que términos como java , (x)emacs(-nox) , (n)vi(m) , quién es y iptables son a menudo algunos de los primeros en tener alternativas definidas para ellos. Para términos verdaderamente genéricos, como EDITOR y CC , las alternatives comando no se considera una solución adecuada. Para esos términos, porque son variables de entorno y deben definirse en /etc o $HOME/.profile .

Creando una nueva alternativa

Continuando con el escenario de ejemplo de un antiguo binario llamado em siendo suplantado 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 proporciona el binario con el nuevo nombre.

En un apuro, especialmente si está eliminando 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 ha cambiado el nombre del editor original em2 (indicando su último número de versión).

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

Cree una alternativa para el original proporcionando:

  • una ubicación para el enlace simbólico "genérico"
  • un nombre para la alternativa (me he decidido por uemacs , para dejar claro que es un nombre de referencia en lugar de un binario específico)
  • el binario que se ejecutará cuando se llamen 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

Cree una alternativa para el nuevo binario, con una prioridad alta porque es su 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 a ya sea /opt/em-legacy/em2 o /usr/local/bin/nem . La referencia humana a este paquete de alternativas es uemacs , que ha sido elegido arbitrariamente por el administrador de sistemas porque es descriptivo y fácil de recordar. Puede elegir el destino del enlace simbólico alternativo usando --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

Eliminar una alternativa

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

$ sudo alternatives --remove-all uemacs

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

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

Alternativas

Las alternatives El comando tiene muchas más características, incluida la capacidad de vincular componentes dependientes cuando se elige una alternativa específica. Además de manejar gran parte del trabajo pesado, las alternatives mantiene sus inconsistencias centralizadas. Puede verificar qué alternativas existen, por lo que no tiene que recordar día a día que emacs es en realidad emacs-26.3 , o que java no es java-1.8 pero /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 , y así sucesivamente:

$ alternatives --list

Linux tiene que ver con la elección y la flexibilidad, y las alternatives El comando es un ejemplo de cómo tanto los usuarios como los administradores pueden beneficiarse de algunos juegos de manos inteligentes.

¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.


Linux
  1. Una introducción al uso de tcpdump en la línea de comandos de Linux

  2. Introducción al comando chmod de Linux

  3. Introducción al comando chown de Linux

  4. Domina el comando ls de Linux

  5. Una introducción al comando diff

El comando del temporizador en Linux

El comando curl de Linux

Ejemplos esenciales del comando ps en Linux

¿Qué es el comando matar en Linux?

Entendiendo el comando time en Linux

Uso del comando grep en Linux