[Tutorial] Instalação manual do Ambiente de Execução Java (JRE) no *Ubuntu Linux

Iniciado por Sampayu, 17 de Janeiro de 2014, 19:25

tópico anterior - próximo tópico

Em qual distribuição GNU/Linux você utiliza este tutorial (caso use mais de uma, informe a principal)?

Arch
0 (0%)
Debian
2 (2.6%)
ElementaryOS
0 (0%)
Fedora
1 (1.3%)
Gentoo
0 (0%)
Mint (inclusive LMDE)
6 (7.7%)
OpenSUSE
0 (0%)
*Ubuntu (Ubuntu, XUbuntu, KUbuntu, LUbuntu...)
64 (82.1%)
Outra
2 (2.6%)
Nenhuma. Vim aqui só por curiosidade.
3 (3.8%)

Total de membros que votaram: 76

Votação encerrada: 01 de Junho de 2016, 19:20

Sampayu

EdvaldoSCruz: você desenvolve aplicações Java? Se não desenvolve, recomendo fortemente que você não instale o JDK da Oracle, pois ele não terá utilidade nenhuma para você: se você não é desenvolvedor, então na prática você nunca irá usar nenhum dos arquivos do JDK que instalou. Irá usar apenas os arquivos que se encontram no JRE que vem com esse JDK. Mas, justamente por isto, é suficiente instalar apenas o JRE.

Uma consequência do que acabei de escrever é que eu recomendo fortemente e peço que neste tópico você não oriente os outros usuários a instalar o JDK da Oracle, pois, novamente: o JDK só é necessário para quem vai desenvolver conteúdo em Java. Como a finalidade deste tutorial é apenas ensinar a instalar o JRE e a vincular o plugin aos navegadores, apenas para que o usuário possa executar, no navegador, o conteúdo que já foi desenvolvido por outra pessoa ou grupo de pessoas, na prática fica sem sentido (e é completamente inútil) explicar aqui a instalação do JDK.

Por favor, leia este comentário que postei neste tópico mesmo.

Se quiser entender um pouco melhor por que que no nome "OpenJDK" o uso da abreviatura "JDK" não é apropriado, ou se quiser ter uma "visualização" melhor da estrutura JRE/JVM, leia este meu outro comentário, que também postei neste tópico.

Eu entendo que muitos usuários instalem o JDK da Oracle acreditando que o JDK oferecerá "mais recursos" e, com isso, diminuirá a possibilidade de algo não funcionar. Mas isso é ilusão: se a aplicação Java (como p.ex. o módulo de segurança do banco) foi desenvolvida para ser executada pela Máquina Virtual Java (JVM), então é necessário instalar apenas o Ambiente de Execução Java (JRE) para que essa aplicação seja executada.

Outro ponto importante: não é necessário desinstalar o OpenJDK e o IcedTea-Web para que o JRE e o plugin Java funcionem. Se os links simbólicos forem criados corretamente, o JRE proprietário da Oracle definido como o padrão do sistema etc., a dupla OpenJDK+IcedTea-Web não será usada. E por que é interessante mantê-la no sistema? Por que sua distribuição pode eventualmente possuir alguma aplicação local que tenha sido desenvolvida para OpenJDK. É interessante possuir dois JRE instalados no sistema, desde que sejam todos mantidos atualizados.

Em relação aos PPA que você mencionou: observe que no seu post você está orientando as pessoas a adicionar a seguinte linha à lista de pacotes-fonte:

deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main

...mas isso é problemático, pois aquele trusty é válido somente para quem está executando distribuições *Ubuntu versão 14.04 "Trusty Tahr". Digo: se, por exemplo, um usuário do *Ubuntu 15.04 "Vivid Vervet" for adicionar esse repositório (o que eu não recomendo fazer, por questões de segurança), esse usuário terá de substituir aquela palavra trusty pela palavra vivid. E, se um outro usuário ler seu comentário e estiver usando *Ubuntu 10.04 "Lucid Lynx", terá de substituir trusty por lucid. Como no seu comentário você não explicou isso, muita gente poderá ser induzida a instalar nos sistemas delas o pacote destinado à versão Trusty, que será diferente das versões dos sistemas que algumas dessas pessoas estarão utilizando.

A lista completa de distribuições *Ubuntu suportada pelo repositório PPA Java do Webupd8team está disponível lá em http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/

Como este tutorial já foi lido por dezenas de milhares de pessoas, é necessário cuidado com o que você escreve aqui, pois pode fornecer informações erradas ou incompletas que podem induzir as pessoas a fazer instalações inadequadas, como é o caso da inutilidade de se instalar um JDK apenas para executar aplicações Java, ou dos problemas que podem decorrer de você instalar pacotes que foram desenvolvidos para uma versão diferente da do sistema operacional que você está usando.
Yuri Sucupira ("Sampayu")

EdvaldoSCruz

Sampayu, valew pela sua dica e me ajudar então.


Desculpe se causei incômodo, somente tentei ajudar.

Ignorância é não aceitar e não submeter-se a CRISTO JESUS.
Para os Iniciantes, como eu, links de solucionar problemas rapidamente.

Sampayu

Citação de: EdvaldoSCruz online 12 de Março de 2016, 06:43
Sampayu, valew pela sua dica e me ajuda então.


Desculpe se causei incômodo, somente tentei ajudar.

"Incômodo" não é uma palavra que descreve bem a minha reação: "preocupação" é uma palavra mais adequada. Este é um tópico de discussão, todo mundo tem o direito de escrever aqui, opinar etc. (desde que não fuja do tema do tópico, claro). Daí eu não me sentir incomodado. Mas a partir do momento em que alguém tenta ensinar algo novo, diferente, a pessoa tem o direito de fazer isso, mas é importante que, ao fazer isso, haja preocupação com detalhes como, por exemplo, informar que "este método funcionou comigo no LUbuntu 14.04 de 32 bits" (estou exemplificando em relação ao uso daquele repositório para *Ubuntu "trusty"), ou ainda esclarecer que "a instalação do JDK é necessária para quem utiliza o aplicativo X, que necessita não apenas do JRE mas também do kit de desenvolvimento do Java" etc.

Enfim: não se sinta coagido a não postar nada aqui. A minha intenção não é essa. O que eu peço é apenas que analise com calma e revise seu texto antes de publicá-lo, para se certificar de que não ensinará algo que pode não funcionar (ou não ter utilidade) para os que lerem o texto. Apesar de este ser um fórum para Ubuntu, quem lê este tópico usa diferentes variantes do Ubuntu (Ubuntu, XUbuntu, LUbuntu etc.), de diferentes arquiteturas (32 bits ou de 64 bits), diferentes versões (14.04, 14.10, 15.04, 15.10 etc.), e ainda há leitores que usam outras distribuições (Mint, Fedora, Debian etc.).

É isso.

Abraço.
Yuri Sucupira ("Sampayu")

EdvaldoSCruz

Ignorância é não aceitar e não submeter-se a CRISTO JESUS.
Para os Iniciantes, como eu, links de solucionar problemas rapidamente.

EdvaldoSCruz

Após muitos anos de uso do Java Oracle, finalmente consegui instalar e usar somente o OpenJDK 64-Bit e está funcionando em todos os Bancos.



edvaldoscruz@HP19All-in-One:~$ java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
edvaldoscruz@HP19All-in-One:~$



Obrigado a todos e agora posso indicar esse Tópico.

Vlw  Sampayu
Ignorância é não aceitar e não submeter-se a CRISTO JESUS.
Para os Iniciantes, como eu, links de solucionar problemas rapidamente.

Sampayu

Citação de: EdvaldoSCruz online 19 de Março de 2016, 17:12
Após muitos anos de uso do Java Oracle, finalmente consegui instalar e usar somente o OpenJDK 64-Bit e está funcionando em todos os Bancos.



edvaldoscruz@HP19All-in-One:~$ java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
edvaldoscruz@HP19All-in-One:~$



Obrigado a todos e agora posso indicar esse Tópico.

Vlw  Sampayu

Se por esse método você conseguiu acessar sua conta, então que bom que deu certo. :)
Yuri Sucupira ("Sampayu")

EdvaldoSCruz

Foi difícil, mas consegui relendo o seu tópico novamente.

OOOObbbbbrrriiiigggaaaddddúúúúúúú.......sr.  Sampayu ;D
Ignorância é não aceitar e não submeter-se a CRISTO JESUS.
Para os Iniciantes, como eu, links de solucionar problemas rapidamente.

Sampayu

A todos os que porventura estejam monitorando este tópico: informo que o Sun Java estável / stable / "oficial" a partir de 23/03/2016 passou a ser o 8u77 (versão 8, atualização 77).

A seção 1 do tutorial já está atualizada.
Yuri Sucupira ("Sampayu")

EdvaldoSCruz

Obrigadú em avisar, vou atualizar no atualizados do meu Debian... :-*  ;D  ;)
Ignorância é não aceitar e não submeter-se a CRISTO JESUS.
Para os Iniciantes, como eu, links de solucionar problemas rapidamente.

Sampayu

Yuri Sucupira ("Sampayu")

Sampayu

A todos os que porventura estejam monitorando este tópico: informo que o Sun Java estável / stable / "oficial" a partir de 19/04/2016 passou a ser o 8u91 (versão 8, atualização 91).

A seção 1 do tutorial já está atualizada.
Yuri Sucupira ("Sampayu")

Sampayu

#281
Regra geral, as distribuições *Ubuntu (Ubuntu, XUbuntu etc.) reconhecem (e fazem aparecer no menu de aplicativos) os arquivos .desktop que você puser dentro de /usr/share/applications. Como o JCONTROL (Painel de Controle do JRE proprietário da Sun/Oracle) não precisa necessariamente ser executado via terminal do shell, você pode querer criar um atalho para ele aparecer diretamente no menu de aplicativos. Caso seja esse o seu caso, tudo o que você precisa fazer é seguir estes passos:

1. Execute o seguinte comando, para instalar o GEdit caso ainda não o possua:

sudo apt-get install gedit -y

2. Agora execute o GEdit em modo root. Eis o comando:

sudo gedit /usr/share/applications/jcontrol.desktop

3. Presumindo que você instalou o JRE proprietário da Sun/Oracle tal qual eu expliquei no tutorial, o binário executável jcontrol estará localizado em /opt/java/jre/bin/jcontrol. Neste caso, copie e cole o seguinte texto dentro da janela do GEdit:

[Desktop Entry]
Version=1.0
Type=Application
Name=Painel de controle Sun/Oracle JRE
Comment=Abre o painel de controle do Ambiente de Execução Java (JRE) proprietário da Sun/Oracle
Icon=/opt/java/jre/lib/images/icons/sun-java.png
Exec=/opt/java/jre/bin/jcontrol
NoDisplay=false
Categories=Java;Other;
StartupNotify=false
Terminal=false


4. Agora salve o arquivo e feche o GEdit.

Reinicie o computador, só para ter certeza de que o menu de aplicativos será atualizado. Feito isso, ao procurar Sun/Oracle no menu de aplicativos você deverá ver um atalho para o painel de controle. ;)

Caso queira excluir esse item do menu, basta executar este comando, no terminal do shell:

sudo rm -f /usr/share/applications/jcontrol.desktop
Yuri Sucupira ("Sampayu")

zero00

Caro Sampayu, obrigado por compartilhar as informações.

Estou com um problema e talvez você possa me ajudar. Tenho o Java instalado manualmente no caminho /opt/jre1.8.0_91

Antes de ler seu tutorial já havia criado manualmente um atalho de /opt/jre1.8.0_91/bin/java para /usr/bin/.
Além disso, criei link do plugin para o Firefox e tudo funciona normalmente. Inclusive o comando java -version retorna a informação da versão correta no terminal.

Seguindo outro tutorial, editei o arquivo /etc/bash.bashrc e inseri no final do arquivo as linhas:
JAVA_HOME=/opt/jdk1.6.0/bin/java
export JAVA_HOME

Feito isso, quando digito no terminal o comando echo $JAVA_HOME é retornado o caminho onde o Java está instalado.

Eis meu problema: Quero instalar o gerenciador de downloads Xtreme Download Manager e quando digito o comando sudo apt-get install xdman, o apt-get retorna a informação:

Os NOVOS pacotes a seguir serão instalados:
  ca-certificates-java fonts-dejavu-extra icedtea-6-jre-cacao icedtea-6-jre-jamvm icedtea-netx icedtea-netx-common java-common
  libatk-wrapper-java libatk-wrapper-java-jni openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib ttf-dejavu-extra tzdata-java xdman


Como o Java já está instalado, então não quero que seja instalada a versão openjdk-jre.
Assim, imaginando que o sistema ainda não reconhecia que o Java já está instalado, executei o comando que você indicou (alterando apenas o caminho):

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

Ao que foi retornado a informação:

update-alternatives: a usar /opt/jre1.8.0_91/bin/java para disponibilizar /usr/bin/java (java) em modo auto

Em seguida reexecutei o comando sudo apt-get install xdman, porém aparece a mesma mensagem de que a versão openjdk-jre será instalada.

O comando java -version continua indicando a versão correta, bem como o comando echo $JAVA_HOME retorna o caminho onde o Java está instalado.

Verifiquei o atalho /usr/bin/java e ele está apontando para /etc/alternatives/java. E o atalho /etc/alternatives/java aponta para  /opt/jre1.8.0_91/bin/java.

Gostaria de saber como resolver esse problema e fazer o Xdman usar o Java atualmente instalado em vez da versão openjdk-jre.
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.

Obrigado pela atenção!

Sampayu

Citação de: zero00 online 25 de Maio de 2016, 22:29
Gostaria de saber como resolver esse problema e fazer o Xdman usar o Java atualmente instalado em vez da versão openjdk-jre.

A instalação do pacote do aplicativo xdman continua dizendo que os outros pacotes serão instalados porque dentro do pacote DEB do aplicativo xdman consta um arquivo CONTROL que informa que, para funcionar corretamente, o pacote xdman necessita que também sejam instalados aqueles outros pacotes. Esses outros pacotes são denominados dependências do pacote principal.

O comando sudo apt-get install nome-do-pacote faz com que o programa APT procure na Internet (nos repositórios de pacotes DEB) o pacote nome-do-pacote, faça download desse pacote e o instale. Porém, esse pacote pode não ser da versão mais recente (o repositório onde o APT encontrou o pacote pode estar desatualizado, em relação à página na qual o desenvolvedor do programa mantém disponível a mais recente versão do pacote DEB). Além disso, o APT resolve dependências automaticamente, o que significa que se o desenvolvedor configurar o pacote DEB para informar que ele depende dos pacotes X, Y e Z para poder funcionar, no momento em que você mandar o APT instalar o pacote nome-do-pacote o APT automaticamente fará download também dos pacotes X, Y e Z, e então instalará todos eles. É o que está acontecendo com você: o pacote do xdman está pré-configurado para informar ao APT que xdman depende daqueles outros "trocentos" pacotes. Por causa disso, o APT continuará insistindo em instalá-los.

Como você já tem instalado o JRE da Sun (Java SE), e tendo em vista que na página do desenvolvedor consta que o aplicativo xdman (Xtreme Download Manager) funciona tanto com o JRE do OpenJDK quanto com o JRE da Sun, não é realmente necessário instalar todos aqueles pacotes que o APT está querendo. Mas, como contornar isso, então?

A solução é não executar o APT. Ao invés disso, execute o DPKG, que é um programa que serve para instalar pacotes DEB que estejam presentes no disco rígido do computador (ao invés de estarem em algum repositório na Internet). O DPKG não resolve dependências, portanto ele irá ignorar as dependências que constam lá no arquivo CONTROL do pacote.

Consequentemente, no seu caso a solução do problema consiste em primeiramente efetuar download do pacote DEB diretamente da página do Xtreme Download Manager:

https://sourceforge.net/projects/xdman/files/xdman.deb/download

Salve esse pacote (xdman.deb) na sua pasta de downloads.

Após salvar esse pacote dentro da sua pasta de downloads - que é /home/seu-nome-de-usuário/Downloads - basta dizer para o DPKG instalar esse pacote. Eis o comando:

sudo dpkg -i ~/Downloads/xdman.deb

Após o comando estar concluído, você conseguirá executar o xdman.  ;)
Yuri Sucupira ("Sampayu")

Sampayu

Citação de: zero00 online 25 de Maio de 2016, 22:29
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.
Yuri Sucupira ("Sampayu")