update-alternatives(8)

NOMBRE
update-alternatives - Gestión de enlaces simbólicos que determinan órdenes predefinidas

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 usar 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.

Cuando se instala o desinstala un paquete que provee un fichero con una funcionalidad en particular se ejecuta update-alternatives para actualizar la información del sistema de alternativas acerca de ese fichero. Habitualmente, update-alternatives se ejecuta desde los scripts postinst (post-instalación o configuración) o prerm (pre-eliminación) de los paquetes de Debian.

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.

El uso de la opción --config hace que update-alternatives muestre todas las elecciones dentro del grupo de enlaces que tienen como maestro a nombre. La elección presente se marca con «*». A continuación se le preguntará por su elección dentro de las opciones posibles en el grupo de enlaces. Una vez que se haga realizado algún cambio el grupo de enlaces dejará de estar en modo automático. Es necesario usar la opción --auto para devolver el grupo de enlaces al estado automático, o puede ejecutar otra vez --config y seleccionar la entrada marcada como automática.

Si quiere realizar la configuración de un modo no interactivo puede usar 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
    Muestra información acerca del grupo de enlaces. La información incluye el modo del grupo (manual o automático), a qué alternativa apunta el enlace maestro, qué otras alternativas existen (y sus alternativas esclavas correspondientes), y la alternativa de mayor prioridad instalada en el sistema.

--get-selections
    Crea un listado de todas los nombres de alternativas maestras (aquellas que controlan un grupo de enlaces) y su estado. Cada línea contiene hasta 3 campos, separados por uno o más espacios. El primer campo es el nombre de la alternativa, el segundo es el estado (bien «auto» o «manual»), y el último contiene la elección presente para la alternativa (puede contener espacios ya que es un nombre de fichero).

--set-selections
    Lee la configuración de alternativas por la entrada estándar en el formato generado por update-alternatives --get-selections y los reconfigura apropiadamente.

--query nombre
    Muestra información acerca del grupo de enlaces, al igual que «--display», pero de una manera que el sistema puede analizar (consulte la sección FORMATO DE CONSULTA más abajo).

--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
    Define el fichero de registro de alternativas cuando es diferente del valor por omisión («/var/log/alternativas.log»).

--force
    Permite que update-alternatives reemplace u omita cualquier fichero real instalado en la misma ubicación donde se va a instalar o eliminar un enlace alternativo.

--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
    Genera una salida con más información acerca de lo que update-alternatives está haciendo.

--quiet
    No genera ningún comentario a menos que ocurra algún error.

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.

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.

FORMATO DE CONSULTA
El formato de consulta de update-alternatives --query utiliza un formato simple de tipo RFC822. Se compone de n + 1 bloques, donde n es el número de alternativas disponibles en el grupo de enlaces consultado. El primer bloque contiene los siguientes campos:

Link: enlace
    El nombre genérico de la alternativa.

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
    Cuando esta cabecera está presente, las líneas next contienen todas las alternativas esclavas asociadas 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 a la alternativa esclava.

Ejemplo
    $ update-alternatives --query editor
    Link: editor
    Status: auto
    Best: /usr/bin/vim.gtk
    Value: /usr/bin/vim.gtk
    Alternative: /bin/ed
    Priority: -100
    Slaves:
     editor.1.gz /usr/share/man/man1/ed.1.gz
    Alternative: /usr/bin/vim.gtk
    Priority: 50
    Slaves:
     editor.1.gz /usr/share/man/man1/vim.1.gz
     editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
     editor.pl.ISO8859-2.1.gz /usr/share/man/pl.ISO8859-2/man1/vim.1.gz
     editor.it.ISO8859-1.1.gz /usr/share/man/it.ISO8859-1/man1/vim.1.gz
     editor.pl.UTF-8.1.gz /usr/share/man/pl.UTF-8/man1/vim.1.gz
     editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
     editor.fr.UTF-8.1.gz /usr/share/man/fr.UTF-8/man1/vim.1.gz
     editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
     editor.it.UTF-8.1.gz /usr/share/man/it.UTF-8/man1/vim.1.gz
     editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
     editor.fr.ISO8859-1.1.gz /usr/share/man/fr.ISO8859-1/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

FALLOS
Si encuentra algún fallo informe de ello usando el sistema de seguimiento de fallos de Debian.

Si encuentra alguna discrepancia entre el modo de operar de update-alternatives y esta página del manual, es un fallo, bien en la implementación o bien en la documentación. Le rogamos que informe de ello.

VÉASE TAMBIÉN
ln(1), FHS, el estándar de la jerarquía del sistema de ficheros.

TRADUCTOR
Rudy Godoy <rudy@kernel-panik.org>, Rubén Porras <nahoo@inicia.es>, Bruno Barrera C. <bruno.barrera@igloo.cl>, Carlos Izquierdo <gheesh@ertis.net>, Esteban Manchado y NOK. Debian L10n Spanish <debian-l10n-spanish@lists.debian.org>.
Revisiones por Santiago Vila <sanvila@unex.es>, Javier Fernández-Sanguino, Rubén Porras, Luis Uribe y Omar Campagne.