update-alternatives(1) Gestión de enlaces simbólicos que determinan órdenes

SINOPSIS

update-alternatives [opción...] orden

DESCRIPCIÓN

update-alternatives crea, elimina, gestiona y muestra información sobre los enlaces simbólicos que conforman el sistema de alternativas de Debian.

Es posible que tenga en el sistema varios programas instalados a la vez que realizan la misma función. Por ejemplo, muchos sistemas tienen varios editores de texto instalados al mismo tiempo, lo que deja la elección de qué editor de texto utilizar en manos del usuario, si éste lo desea, pero hace difícil que un programa elija la opción correcta si el usuario no ha definido ninguna preferencia.

El objetivo del sistema de alternativas de Debian es resolver este problema. Un nombre genérico en el sistema de ficheros se comparte entre todos los ficheros que tienen una funcionalidad intercambiable. El sistema de alternativas junto con el administrador del sistema determinan a qué fichero hace referencia este nombre genérico. Por ejemplo, si los editores de texto ed(1) y nvi(1) están instalados conjuntamente en el sistema, el sistema de alternativas hará que el nombre genérico /usr/bin/editor se refiera a /usr/bin/nvi por omisión. El administrador del sistema puede modificar esto y hacer que se refiera a /usr/bin/ed, y el sistema de alternativas no modificará esto posteriormente hasta que se solicite explícitamente.

El nombre genérico no es un enlace simbólico directo a la alternativa seleccionada. En vez de esto, es un enlace simbólico a un nombre en el directorio de alternativas («/etc/alternatives»), que a su vez es un enlace simbólico al fichero al que se hace referencia en realidad. El objetivo es que los cambios del administrador se mantengan dentro del directorio /etc: el FHS (q.v.) da razones de por qué esto es bueno.

When each package providing a file with a particular functionality is installed, changed or removed, update-alternatives is called to update information about that file in the alternatives system. update-alternatives is usually called from the postinst (configure) or prerm (remove and deconfigure) scripts in Debian packages.

Habitualmente, es útil que un número de alternativas se sincronicen de tal modo que se puedan cambiar como un grupo. Por ejemplo, cuando varias versiones del editor vi(1) están instaladas la página del manual preferida por /usr/share/man/man1/vi.1 debe corresponder con el ejecutable al que hace referencia /usr/bin/vi. update-alternatives manipula esto en términos de enlaces maestro y esclavo; cuando se cambia el maestro, todos los esclavos relacionados con él también cambian. Un enlace maestro y sus esclavos relacionados forman un grupo de enlaces.

Cada grupo de enlaces está en todo momento en uno de los dos modos posibles: automático o manual. Cuando un grupo está en modo automático el sistema de alternativas decide automáticamente el momento de actualizar los enlaces a medida que se instalan o desinstalan paquetes. En modo manual el sistema de alternativas deja todas estas decisiones en manos del administrador del sistema.

Los grupos de enlaces se establecen en modo automático la primera vez que aparecen en el sistema. Si el administrador del sistema hace cambios en la configuración automática del sistema, update-alternatives se dará cuenta la próxima vez que se ejecute sobre el grupo de enlaces cambiados y el grupo pasará automáticamente a modo manual.

Cada alternativa tiene una prioridad asociada. Cuando un grupo de enlaces se encuentra en modo automático, los miembros del grupo apuntarán a la alternativa con la prioridad más alta.

When using the --config option, update-alternatives will list all of the choices for the link group of which given name is the master alternative name. The current choice is marked with a '*'. You will then be prompted for your choice regarding this link group. Depending on the choice made, the link group might no longer be in auto mode. You will need to use the --auto option in order to return to the automatic mode (or you can rerun --config and select the entry marked as automatic).

Si quiere realizar la configuración de un modo no interactivo puede utilizar la opción --set en su lugar (véase más abajo).

Los diferentes paquetes que proveen el mismo fichero tienen que hacerlo de forma cooperativa. En otras palabras, el uso de update-alternatives es obligatorio con todos los paquetes relacionados con esa situación. No es posible sobreescribir el fichero de un paquete que no usa el mecanismo de update-alternatives.

TERMINOLOGÍA

Debido a que las actividades que realiza update-alternatives están fuertemente relacionadas entre sí, la definición de algunos términos específicos ayudará a entender su funcionamiento.
nombre genérico (o enlace alternativo)
Un nombre, como /usr/bin/editor, que mediante el sistema de alternativas hace referencia a uno de los posibles ficheros con una función similar.
nombre de la alternativa
El nombre de un enlace simbólico en el directorio de alternativas.
alternativa (o ruta alternativa)
El nombre de un fichero específico en el sistema de ficheros al que se puede acceder a través de un nombre genérico usando el sistema de alternativas.
directorio de alternativas
El directorio que contiene los enlaces, por omisión es /etc/alternatives.
directorio administrativo
El directorio que contiene la información de estado de update-alternatives, por omisión es /var/lib/dpkg/alternatives.
grupo de enlaces
Un conjunto de enlaces relacionados con el objetivo de que se actualicen como grupo.
enlace maestro
El enlace alternativo en un grupo de enlaces que determina cómo se configuran el resto de los enlaces del grupo.
enlace esclavo
Un enlace alternativo en un grupo de enlaces definido por el enlace maestro.
modo automático
Cuando un grupo de enlaces se encuentra en modo automático el sistema de alternativas asegura que los enlaces del grupo apuntan a la alternativa con la mayor prioridad en ese grupo.
modo manual
Cuando un grupo de enlaces se encuentra en modo manual el sistema de alternativas no hará ningún cambio en la configuración del administrador.

ÓRDENES

--install enlace nombre ruta prioridad [--slave enlace nombre ruta] ...
Añade un grupo de alternativas al sistema. enlace es el nombre genérico del enlace maestro, nombre es el nombre del enlace simbólico en el directorio de alternativas, y ruta es la alternativa que se va a introducir para el enlace maestro. Los argumentos a continuación de --slave son el nombre genérico, el nombre del enlace simbólico en el directorio de alternativas, y la ruta alternativa para el enlace esclavo. Puede definir cero o más opciones de --slave, cada uno seguido de tres argumentos. Tenga en cuenta que la alternativa maestra debe existir previamente o la ejecución fallará. Por otra parte, si la alternativa esclava no existe, el enlace esclavo alternativo correspondiente no se instalará, mostrando un aviso. Un fichero real instalado en la ubicación de un enlace alternativo nunca se eliminará a menos que se use --force.
Si el nombre de la alternativa definida ya existe en los registros del sistema de alternativas la información suministrada se añadirá como un nuevo conjunto de alternativas para el grupo. De otra forma se creará un grupo nuevo en modo automático, al que se le añadirá la información suministrada. Si el grupo está en modo automático, y la prioridad nueva añadida es mayor que cualquier otra alternativa instalada para ese grupo, los enlaces se actualizarán para apuntar a las nuevas alternativas.
--set nombre ruta
Define la ruta del programa como alternativa para nombre. Equivale a --config pero no es interactivo, de modo que permite su inclusión en scripts.
--remove nombre ruta
Elimina una alternativa y todos sus enlaces esclavos asociados. nombre es el nombre en el directorio de alternativas y ruta es el nombre absoluto del fichero al que nombre se podría enlazar. Si nombre está en realidad enlazado a ruta, nombre se actualizará para que apunte a otra alternativa apropiada o se eliminará si no queda ninguna alternativa restante. Los enlaces esclavos asociados se actualizarán o eliminarán correspondientemente. Si el enlace no apunta a ruta, no se cambia ningún enlace, sólo se elimina la información acerca de la alternativa.
--remove-all nombre
Elimina todas las alternativas y todos sus enlaces esclavos asociados. nombre es un nombre en el directorio de alternativas.
--all
Ejecuta --config sobre todas las alternativas. Puede ser útil en combinación con --skip-auto para revisar y configurar todas las alternativas que no están configuradas en modo automático. También se muestran las alternativas rotas. Una manera sencilla de arreglar todas las alternativas rotas es ejecutar yes '' | update-alternatives --force --all.
--auto nombre
Cambia el grupo de enlaces dependientes de la alternativa nombre a modo automático. En el proceso, el enlace simbólico y sus esclavos se actualizarán para apuntar a la alternativa instalada con una prioridad mayor.
--display nombre
Display information about the link group. Information displayed includes the group's mode (auto or manual), the master and slave links, which alternative the master link currently points to, what other alternatives are available (and their corresponding slave alternatives), and the highest priority alternative currently installed.
--get-selections
List all master alternative names (those controlling a link group) and their status (since version 1.15.0). Each line contains up to 3 fields (separated by one or more spaces). The first field is the alternative name, the second one is the status (either auto or manual), and the last one contains the current choice in the alternative (beware: it's a filename and thus might contain spaces).
--set-selections
Read configuration of alternatives on standard input in the format generated by --get-selections and reconfigure them accordingly (since version 1.15.0).
--query nombre
Display information about the link group like --display does, but in a machine parseable way (since version 1.15.0, see section QUERY FORMAT below).
--list name
Muestra todos los objetivos del grupo de enlaces.
--config nombre
Muestra las alternativas disponibles para un grupo de enlaces y permite al usuario seleccionar interactivamente cual usar. El grupo de enlaces se actualizará.
--help
Muestra el modo de uso y termina.
--version
Muestra la versión y termina.

OPCIONES

--altdir directorio
Define el directorio de alternativas, cuando es diferente del directorio por omisión.
--admindir directorio
Define el directorio administrativo, cuando es diferente del directorio por omisión.
--log=fichero
Specifies the log file (since version 1.15.0), when this is to be different from the default (/var/log/alternatives.log).
--force
Allow replacing or dropping any real file that is installed where an alternative link has to be installed or removed.
--skip-auto
Omite el dialogo de configuración de alternativas para aquellas configuradas adecuadamente en modo automático. Esta opción solo tiene sentido con --config o --all.
--verbose
Generate more comments about what is being done.
--quiet
No genera ningún comentario a menos que ocurra algún error.

ESTADOS DE SALIDA

0
La acción requerida finalizó con éxito.
2
Se encontraron problemas analizando la línea de órdenes o realizando la acción requerida.

ENTORNO

DPKG_ADMINDIR
Si se define, y no se define la opción --admindir, se utiliza como el directorio base de gestión.

FICHEROS

/etc/alternatives/
El directorio de alternativas por omisión. Se puede cambiar con la opción --altdir.
/var/lib/dpkg/alternatives/
El directorio de administración por omisión. Se puede modificar con la opción --admindir.

FORMATO DE CONSULTA

The --query format is using an RFC822-like flat format. It's made of n + 1 blocks where n is the number of alternatives available in the queried link group. The first block contains the following fields:
Name: nombre
El nombre de la alternativa en el directorio de alternativas.
Link: enlace
El nombre genérico de la alternativa.
Slaves: lista de esclavos
Cuando este campo está presente, las líneas siguientes contienen todos los enlances esclavos asociados al enlace maestro de la alternativa. Hay un esclavo por línea. Cada línea contiene un espacio, el nombre genérico de la alternativa esclava, otro espacio, y la ruta al enlace esclavo.
Status: estado
El estado de la alternativa (auto o manual).
Best: mejor-opción
La ruta de la mejor alternativa para este grupo de enlaces. No aparece si no existen alternativas disponibles.
Value: alternativa-seleccionada-actualmente
La ruta de la alternativa seleccionada en ese momento. También puede tomar el valor mágico none (ninguno). Se usa si el enlace no existe.
Los siguientes bloques describen las alternativas disponibles en el grupo de enlaces consultado:
Alternative: ruta-a-esta-alternativa
Ruta a la alternativa de este bloque.
Priority: valor-de-prioridad
Valor de la prioridad de esta alternativa.
Slaves: lista de esclavos
When this field is present, the next lines hold all slave alternatives associated to the master link of the alternative. There is one slave per line. Each line contains one space, the generic name of the slave alternative, another space, and the path to the slave alternative.
Ejemplo
$ update-alternatives --query editor
Name: editor
Link: /usr/bin/editor
Slaves:
 editor.1.gz /usr/share/man/man1/editor.1.gz
 editor.fr.1.gz /usr/share/man/fr/man1/editor.1.gz
 editor.it.1.gz /usr/share/man/it/man1/editor.1.gz
 editor.pl.1.gz /usr/share/man/pl/man1/editor.1.gz
 editor.ru.1.gz /usr/share/man/ru/man1/editor.1.gz
Status: auto
Best: /usr/bin/vim.basic
Value: /usr/bin/vim.basic
Alternative: /bin/ed
Priority: -100
Slaves:
 editor.1.gz /usr/share/man/man1/ed.1.gz
Alternative: /usr/bin/vim.basic
Priority: 50
Slaves:
 editor.1.gz /usr/share/man/man1/vim.1.gz
 editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
 editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
 editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
 editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz

DIAGNÓSTICOS

Con la opción --verbose, update-alternatives informa detalladamente acerca de sus actividades por la salida estándar. Si ocurre algún problema, update-alternatives envía los mensajes de error por la salida de errores estándar y cierra con el estado 2. Los diagnósticos deberían ser auto-explicativos; si a usted no se lo parecen, le rogamos informe de esto como un fallo.

EJEMPLOS

Hay varios paquetes que proporcionan un editor de texto compatible con vi, por ejemplo nviy vim. El grupo de enlaces vi selecciona cual se usa, incluyendo enlaces para el programa y la página del manual asociada.

Utilice la opción --display para mostrar los paquetes disponibles que proporcionan vi y su configuración actual:

update-alternatives --display vi

Para elegir una implementación de vi en particular use la siguiente orden como el usuario «root» y seleccione un número de la lista:

update-alternatives --config vi

Para que la implementación de vi se vuelva a elegir de forma automática, haga como administrador:

update-alternatives --auto vi

TRADUCTOR

Rudy Godoy <[email protected]>, Rubén Porras <[email protected]>, Bruno Barrera C. <[email protected]>, Carlos Izquierdo <[email protected]>, Esteban Manchado y NOK. Debian L10n Spanish <[email protected]>.
Revisiones por Santiago Vila <[email protected]>, Javier Fernández-Sanguino, Rubén Porras, Luis Uribe y Omar Campagne.