De https://stackoverflow.com/a/48374564/156458
update-alternatives --config java
funciona instalando links simbólicos para comandos como/usr/bin/java
,/usr/bin/javac
e assim por diante.
Como update-alternatives --config somecommand
encontrar os links simbólicos para somecommand
?
Por exemplo, ele depende de $PATH
e, portanto, funciona da mesma maneira que o bash encontra os arquivos somecommand
ao executar somecommand
diretamente no bash?
Se o arquivo somecommand
for não for um link simbólico, update-alternative --config somecommand
funcionará?
Obrigado.
A maneira como
update-alternatives
funciona é descrita em sua página de manual . A lista de alternativas disponíveis para um determinado comando (ou arquivo, em geral — alternativas não se limitam a comandos) é armazenada em um arquivo no/var/lib/dpkg/alternatives
Debian e derivados; assim, as alternativas parajava
são armazenadas em/var/lib/dpkg/alternatives/java
. No Fedora, RHEL e derivados, os arquivos são armazenados em/var/lib/alternatives
.Quando um pacote deseja fornecer uma alternativa, ele a instala usando
update-alternatives --install
(e parâmetros apropriados); quando deseja remover uma alternativa, o faz usandoupdate-alternatives --remove
. Você pode usá-los para fornecer suas próprias alternativas, se necessário.Note que no caso do Java especificamente, no Debian e derivados, o manuseio das alternativas é um pouco mais complexo e você deve usar
update-java-alternatives
ao invés de manipular todas as alternativas manualmente.Se, por algum motivo, um arquivo gerenciado por alternativa não for um link simbólico,
update-alternatives
considerará que a alternativa está quebrada e se recusará a tocá-la.