update-alternatives(1)

NOME
update-alternatives - mantém links simbólicos que determinam os comandos predefinidos

RESUMO
update-alternatives [option...] command

DESCRIÇÃO
update-alternatives cria, remove, mantêm e mostra informação acerca dos links simbólicos que abrangem o sistema de alternativos.

É possível para vários programas realizarem o mesmo ou funções semelhantes para serem instalados num único sistema ao mesmo tempo. Por exemplo, muitos sistemas têm vários editores de texto instalados ao mesmo tempo. Isto dá escolha aos utilizadores do sistema, permitindo que cada um use um editor diferente, se o desejar, mas torna difícil para um programa fazer uma boa escolha no editor a invocar se o utilizador não especificou a sua preferência particular.

O sistema de alternativas destina-se a resolver este problema. Um nome genérico no sistema de ficheiros é partilhado por todos os ficheiros que fornecem funcionalidades intercambiáveis. O sistema de alternativas e o administrador do sistema juntamente determinam qual ficheiro real é referenciado por este nome genérico. Por exemplo, se os editores de texto ed(1) e nvi(1) estiverem ambos instalados no sistema, o sistema de alternativas irá fazer com que o nome genérico /usr/bin/editor se refira a /usr/bin/nvi por predefinição. O administrador do sistema pode sobrepor isto e fazê-lo referir-se a /usr/bin/ed em vez do primeiro, e o sistema de alternativas não irá alterar esta definição até que lhe seja requerido explicitamente fazê-lo.

O nome genérico não é um link simbólico directo para a alternativa selecionada. Em vez disso, é um link simbólico para um nome no directório alternatives, o qual por sua vez é um link simbólico para o ficheiro real referenciado. Isto é feito deste modo para que as alterações do administrador do sistema fiquem confinadas dentro do directório /usr/pkg/share/dpkg: a FHS (q.v.) explica o porquê isto ser uma Coisa Boa.

Quando cada pacote que fornece um ficheiro com uma determinada funcionalidade é instalado, modificado ou removido, o update-alternatives é chamado para actualizar a informação sobre esse ficheiro no sistema de alternativas. O update-alternatives é geralmente chamado a partir dos seguintes scripts de maintainer de pacote Debian, postinst (configurar) para instalar a alternativa e a partir de prerm e postrm (remover) para remover a alternativa. Nota: na maioria dos casos (se não todos) nenhuma outra acção de script de maintainer deverá chamar update-alternatives, em particular nenhum de upgrade nem disappear, pois outra acção do tipo pode perder o estado manual da alternativa, ou fazer a alternativa inverter temporariamente, ou comutar completamente quando várias têm a mesma prioridade.

Isto é muitas vezes útil para se sincronizar várias alternativas, para que sejam mudadas como um grupo; por exemplo, quando estão instaladas várias versões do editor vi(1), o manual referenciado por /usr/share/man/man1/vi.1 deve corresponder ao executável referenciado por /usr/bin/vi. update-alternatives lida com isto por meio de links master e slave; quando o mestre é mudado, quaisquer slaves associados são também mudados. Um link mestre e os seus slaves associados fazem um group de link.

Cada grupo de links é, a qualquer altura, em um ou dois modos: automático ou manual. Quando um grupo está em modo automático, o sistema de alternativas irá decidir automaticamente, quando os pacotes são instalados ou removidos, em como actualizar os links. Em modo manual, o sistema de alternativas irá reter a escolha do administrador e evitar alterar os links (excepto quando algum quebrar).

Grupos de links ficam em modo automático quando são introduzidos pela primeira vez no sistema. Se o administrador do sistema fizer alterações nas definições automáticas do sistema, isso será notificado na próxima vez que o update-alternatives correr no grupo de links alterado, e o grupo será automaticamente comutado para modo manual.

Cada alternativa tem uma priority associada. Quando um grupo de links está em modo automático, as alternativas apontadas pelos membros do grupo serão aquelas que têm aprioridade mais alta.

Quando se usa a opção --config, o update-alternatives irá listar todas as opções para o grupo de links do qual o nome dado é o nome alternativo mestre. A escolha actual é marcada com um ‘*’. Você será depois questionado sobre a sua escolha em relação a este grupo de links. Dependendo da escolha feita, o grupo de link pode não mais ficar em modo auto. Você precisa usar a opção --auto de modo a regressar ao modo automático (ou pode voltar a correr --config e escolher a entrada marcada como automática).

Se desejar configurar não interactivamente, em vez disto pode usar a opção --set (veja em baixo).

Pacotes diferentes que forneçam o mesmo ficheiro precisam de fazê-lo cooperativamente. Por outras palavras, o uso de update-alternatives é obrigatório para todos os pacotes envolvidos em tal caso. Não é possível sobrepor qualquer ficheiro de um pacote em que não se empregue o mecanismo update-alternatives.

TERMINOLOGIA
Como as atividades de update-alternatives estão bastante envolvidas, alguns termos específicos irão ajudar a explicar a sua operação.

nome genérico (ou link alternativo)
    Um nome, como /usr/bin/editor, o qual refere, via sistema de alternativos, a um de um número de ficheiros de função semelhante.

nome alternativo
    O nome do links simbólico no directório de alternativos.

alternativo (ou caminho alternativo)
    O nome de um ficheiro especifico no sistema de ficheiros, que pode ser tornado acessível via um nome genérico usando o sistema de alternativos.

directório de alternativos
    Um directório, por predefinição /usr/pkg/share/dpkg/alternatives, que contém os links simbólicos.

directório administrativo
    Um directório, por predefinição /var/db/dpkg/alternatives, que contém informações de estado do update-alternatives.

grupo de links
    Um conjunto de links simbólicos relacionados, destinados a serem actualizados como um grupo.

link mestre
    O link alternativo num grupo de links que determina como os outros links no grupo são configurados.

link escravo
    Um link alternativo num grupo de links que é controlado pela definição do link mestre.

modo automático
    Quando um grupo de links está em modo automático, o sistema de alternativas assegura que os links do grupo apontam para a alternativa apropriada de prioridade mais alta para o grupo.

modo manual
    Quando um grupo de links está em modo manual, o sistema de alternativas não irá fazer nenhumas alterações às definições do administrador do sistema.

COMANDOS

--install link name path priority [--slave link name path]...
    Adiciona um grupo de alternativas ao sistema. link é o nome genérico para o link mestre, name é o nome do seu link simbólico no directório de alternativas, e path é a alternativa a ser introduzida para o link mestre. Os argumentos após --slave são o ome genérico, nome do link simbólico no directório de alternativas e o caminho alternativo para um link slave. Podem ser especificadas zero ou mais opções --slave, cada uma seguida de três argumentos. Note que a alternativa mestre tem de existir ou a chamada irá falhar. No entanto se uma alternativa slave não existir, o link de alternativa slave correspondente simplesmente não irá ser instalado (mesmo assim é mostrado um aviso). Se estiver instalado um ficheiro real no lugar onde um link simbólico deve ser instalado, este é mantido a menos que seja usado --force.

    Se o nome alternativo especificado já existir nos registos do sistema de alternativas, a informação fornecida será adicionada como um novo conjunto de alternativas para o grupo. Caso contrário, será adicionado um novo grupo, definido para modo automático, com esta informação. Se o grupo estiver em modo automático, e as prioridade das alternativas recentes adicionadas é mais alta que as outras alternativas instaladas para este grupo, os links simbólicos serão actualizados para apontarem às novas alternativas adicionadas.

--set name path
    Define o programa path como alternativa para name. Isto é equivalente a --config mas não é interactivo e assim apropriado para usar em scripts.

--remove name path
    Remove uma alternativa e todos os seus links slave associados. name é um nome no directório de alternativas, e path é um nome de ficheiro absoluto para o qual name poderá estar vinculado. Se name está de facto vinculado a path, name será actualizado para apontar para outra alternativa apropriada (e o grupo é colocado de novo em modo automático), ou removido se não existir mais nenhuma alternativa. Os links slave associados serão actualizados ou removidos, correspondentemente. Se o link não está actualmente a apontar para path, nenhum link é alterado, apenas é removida a informação sobre a alternativa.

--remove-all name
    Remove todos os alternativos e todos os seus links escravos associados. name é um nome no directório de alternativos.

--all
    Chama --config em todas as alternativas. Pode ser útil combinado com --skip-auto para rever e configurar todas as alternativas que não estão configuradas em modo automático. São também mostradas as alternativas quebradas. Assim um modo simples de corrigir todas as alternativas quebradas é chamar yes '' | update-alternatives --force --all.

--auto name
    Comuta o grupo de link por detrás da alternativa para name para modo automático. No processo, o link simbólico mestre e os seus slaves são actualizados par apontar para a alternativa instalada de prioridade mais alta.

--display name
    Mostra informação sobre o grupo de link. A informação ,mostrada inclui o modo do grupo (auto ou manual), os links mestre e slave, a qual alternativa o link mestre presentemente aponta, que outras alternativas estão disponíveis (a as suas alternativas slave correspondentes), e a alternativa de prioridade mais alta presentemente instalada.

--get-selections
    Lista todos os nomes de alternativa mestre (aqueles que controlam um grupo link) e os seus estados (desde versão 1.15.0). Cada linha contém até 3 campos (separados por um ou mais espaços). O primeiro campo é o nome da alternativa, o segundo é o estado (se auto ou manual), e o último contem a escolha actual na alternativa (cuidado: é um nome de ficheiro, e pode conter espaços).

--set-selections
    Lê a configuração de alternativas na entrada standard no formato gerado por --get-selections e reconfigura-as adequadamente (desde versão 1.15.0).

--query name
    Mostra informação acerca do grupo link como o --display faz mas num modo analisável por máquina (desde versão 1.15.0, Veja secção "FORMATO DE CONSULTA" abaixo.

--list name
    Mostra todas as metas do grupo de links.

--config name
    Mostra as alternativas disponíveis para um grupo de links e permite ao utilizador seleccionar interactivamente qual delas usar. O grupo de links é actualizado.

--help
    Mostra a mensagem de utilização e termina.

--version
    Mostra a versão e termina.

OPÇÕES

--altdir directory
    Especifica o directório alternativo, quando é suposto este ser diferente do predefinido. A predefinição é «/usr/pkg/share/dpkg/alternatives».

--admindir directory
    Especifica o directório administrativo, quando este deve ser diferente do predefinido. A predefinição é «/var/db/dpkg/alternatives» se DPKG_ADMINDIR não estiver definido.

--instdir directory
    Especifica o directório de instalação onde os links alternativos serão criados (desde versão 1.20.1). A predefinição é «/» se DPKG_ROOT não estiver definido.

--root directory
    Especifica o directório raiz (desde 1.20.1). Isto também define alternativas, directórios de instalação e administração para corresponder. A predefinição é «/» se DPKG_ROOT não estiver definido.

--log file
    Especifica o ficheiro de relatório (desde a versão 1.15.0), quando este é suposto ser diferente do predefinido (/usr/pkg/var/log/alternatives.log).

--force
    Permite substituir ou largar qualquer ficheiro real que está instalado quando um link alternativo tem de ser instalado ou removido.

--skip-auto
    Salta o aviso de configuração para alternativas que as quais já estão correctamente configuradas em modo automático. Esta opção é apenas relevante com --config ou --all.

--quiet
    Não gera nenhuns comentários, a menos que ocorram erros.

--verbose
    Gera mais comentários acerca do que está a ser feito.

--debug
    Gera ainda mais comentários, úteis para depuração, acerca do que está a ser feito (desde versão 1.19.3).

ESTADO À SAÍDA

0   A acção requisitada foi executada com sucesso.

2   Foram encontrados problemas ao analisar a linha de comandos ou ao executar a acção.

AMBIENTE

DPKG_ROOT
    Se definido e as opções --instdir ou --root não foram especificadas, será usado como o directório raiz do sistema de ficheiros.

DPKG_ADMINDIR
    Se definido e se a opção --admindir não foi especificada, será usado como o directório administrativo base.

FICHEIROS

/usr/pkg/share/dpkg/alternatives/
    O directório de alternativas predefinido. Pode ser sobreposto pela opção --altdir.

/var/db/dpkg/alternatives/
    O directório de administração predefinido. Pode ser sobreposto pela opção --admindir.

FORMATO DE CONSULTA
O formato --query está a usar um formato liso tipo RFC822. É composto de n estrofes + 1 onde n é o número e alternativas disponíveis no grupo de link questionado. A primeira estrofe contem os seguintes campos:

Name: name
    O nome alternativo no directório alternativo.

Link: link
    O nome genérico da alternativa.

Slaves: list-of-slaves
    Quando este campo está presente, as próximas linhas contêm todas os links escravos associados ao link mestre da alternativa. Há um escravo por linha. Cada linha contem um espaço, o nome genérico da alternativa escravo, outro espaço, e o caminho para o link escravo.

Status: status
    O estado da alternativa (auto ou manual).

Best: best-choice
    O caminho da melhor alternativa para este grupo de links. Não presente se não existirem alternativas disponíveis.

Value: currently-selected-alternative
    O caminho da alternativa seleciona actualmente. Também pode tirar o valor mágico none. É usado quando o link não existe.

As outras estrofes descrevem as alternativas disponíveis no grupo de links questionado.

Alternative: path-of-this-alternative
    Caminho para a alternativa desta estrofe.

Priority: priority-value
    Valor da prioridade desta alternativa.

Slaves: list-of-slaves
    Quando este campo está presente, as próximas linhas contêm todas as alternativas escravas associadas ao link mestre da alternativa. Há um escrava por linha. Cada linha contem um espaço, o nome genérico da alternativa escravo, outro espaço, e o caminho para a alternativa escravo.

  Exemplo
 $ 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ÓSTICO
Com --verbose o update-alternatives fala incessantemente acerca das suas atividades no seu canal de saída standard. Se ocorrerem problemas, o update-alternatives envia mensagens de erro no seu canal de erros standard e retorna um estado de saída de 2. Estes diagnósticos deverão ser suficientemente explicativos, se você acha que não o são, por favor reporte isso como um bug.

EXEMPLOS
Existem vários pacotes que fornecem um editor de texto compatível com o vi, por exemplo e nvi e o vim. Qual deles é o usado é controlado pelo grupo de links vi, que inclui links para o próprio programa e o manual associado.

Para mostrar os pacotes disponíveis que fornecem o vi e a configuração actual para ele, use a acção --display.

 update-alternatives --display vi

Para escolher uma implementação particular do vi, use este comando como root e depois selecione um número da lista.

 update-alternatives --config vi

Para voltar atrás e ter a implementação vi escolhida automaticamente, faça isto como root:

 update-alternatives --auto vi

VEJA TAMBÉM
ln(1), FHS (o Standard de Hierarquia de Sistema de Ficheiros).

TRADUÇÃO
Américo Monteiro

Se encontrar algum erro na tradução deste documento, por favor comunique para Américo Monteiro <a_monteiro@gmx.com>.