Outra coisa que queria saber é o que o comando sudo update-alternatives --install /usr/bin/java java /opt/jre1.8.0_91/bin/java 10 && sudo update-alternatives --set java /opt/jre1.8.0_91/bin/java faz exatamente.
O
sistema de alternativas do Debian é um modo de o usuário informar para a sua distribuição Debian Linux qual é o "programa padrão" (p.ex. o aplicativo a ser automaticamente escolhido pelo sistema operacional) para cada tipo de tarefa a ser executada: qual o seu navegador web padrão, qual o seu JRE padrão, qual o seu gerenciador de arquivos padrão etc. São os "programas preferenciais": você cadastra todas as alternativas disponíveis, como por exemplo os navegadores web Google Chrome, Mozilla Firefox, Opera Browser, Mozilla Seamonkey (quatro navegadores web instalados no seu sistema = 4 alternativas disponíveis, no conjunto dos navegadores web), e em seguida usa o comando
update-alternatives para informar ao seu sistema operacional qual dessas 4 alternativas deverá ser usada como o navegador web padrão (aplicativo/navegador web preferencial) do seu sistema. Se p.ex. você definir, no sistema de alternativas, que o seu navegador padrão será o Firefox, então toda vez que você executar clique duplo em cima de um arquivo HTML, seu Linux vai usar o Firefox para abrir esse arquivo HTML.
Isso é necessário porque seu sistema operacional não possui "bola de cristal" para adivinhar qual é - entre as alternativas disponíveis - o programa que você prefere usar para cada determinado tipo de ação.
Como as distribuições *Ubuntu são baseadas na distribuição Debian, os *Ubuntu também usam o sistema de alternativas.
No caso do JRE (Ambiente de Execução Java), se você instala o JRE do OpenJDK e o JRE da Sun/Oracle, seu sistema passa a ter duas Máquinas Virtuais Java (JVM) dentro do sistema de alternativas do seu computador. Daí a importância daquele supercomando do meu tutorial. Veja a explicação para eles:
sudo update-alternatives --install /usr/bin/java java /opt/jre1.8.0_91/bin/java 10:
sudo torna você temporariamente superusuário (superuser / root). SUDO é abreviação de "superuser do".
update-alternatives significa que o sistema de alternativas será atualizado.
--install significa que uma nova alternativa será instalada.
/usr/bin/java é a localização virtual da JVM (máquina virtual Java). Esse arquivo é um link simbólico que aponta para a real localização da JVM que foi escolhida para ser a alternativa padrão do grupo.
java é o nome do grupo de alternativas. No caso, esse é o "grupo das JVM" ou "grupo das máquinas virtuais Java que se encontram instaladas no seu Linux".
/opt/jre1.8.0_91/bin/java é a localização real da JVM.
10 é a prioridade de seleção dessa alternativa, em relação às outras alternativas (às outras JVM disponíveis).
Em síntese, o comando acima informa ao seu sistema Linux que, dentro do grupo
java (grupo das JVM) deverá ser adicionada uma nova JVM, que é o arquivo executável que se encontra em
/opt/jre1.8.0_91/bin/java. Por causa disso, toda vez que qualquer programa executar o arquivo
/usr/bin/java, esse arquivo apontará para
/opt/jre1.8.0_91/bin/java, que será então executado. A gente sabe que ele será sempre executado porque as JVM alternativas (OpenJDK e quaisquer outras que porventura estejam instaladas) por padrão vêm instaladas com números de prioridade muito grandes, como p.ex. 1071, 10000 etc. Como você definiu manualmente que a JVM da Sun deverá ter prioridade 10, o sistema de alternativas sempre escolherá essa JVM da Sun (quanto menor o número, mais prioritário / mais preferencial é o programa, dentro do grupo de alternativas ao qual ele pertence). Portanto, o comando acima adiciona a máquina virtual Java da Sun/Oracle ao sistema de alternativas do seu Linux, e instrui o seu Linux a sempre usar essa máquina virtual com prioridade 10, o que na prática torna essa JVM a "JVM padrão" do seu sistema Linux.
No entanto, como não é impossível que, ao instalar outra JVM, o seu Linux instale essa JVM, dentro do sistema de alternativas, com prioridade menor que 10, precisamos garantir que mesmo assim a JVM da Sun/Oracle seja executada, sempre. É isso que faz o segundo comando:
sudo novamente torna você temporariamente superusuário (superuser / root). SUDO é abreviação de "superuser do".
update-alternatives significa que o sistema de alternativas será atualizado.
--set aqui significa "definir como o padrão do sistema".
java é o nome do grupo de alternativas. No caso, esse é o "grupo das JVM" ou "grupo das máquinas virtuais Java que se encontram instaladas no seu Linux". Isso significa que, dentro do grupo de alternativas "java", uma das alternativas de dentro desse grupo será definida como a "alternativa padrão", a ser sempre executada (mesmo que ela possua prioridade menor / menos preferência que alguma outra).
/opt/jre1.8.0_91/bin/java é a localização da JVM a ser definida como padrão do sistema.
Portanto:
- O supercomando acima é formado por dois comandos. Aquele
&& serve para fazer um comando ser executado imediatamente após o outro.
- O primeiro comando instala a JVM da Sun, dentro do sistema de alternativas, e a configura com uma prioridade bem baixa, para fazer com que ela seja sempre escolhida para ser executada.
- O segundo comando define a JVM da Sun como padrão do sistema de alternativas, de modo que ela seja executada mesmo caso uma alternativa preferencial seja instalada.
- O segundo comando complementa o primeiro, e ambos funcionam de modo a garantir que a JVM da Sun seja sempre executada, por padrão.