Eu tive problemas parecidos com a existência do Oracle java e do OpenJDK lado a lado no Fedora 16. Eu segui o guia em Se não for True, então False e funcionou perfeitamente.
Isso é o que eu gostaria de alcançar, mas estou falhando (sou novato no Linux).
Eu tenho uma caixa Fedora 16 (64 bits) e gostaria de instalar várias versões do oracle java (java 6 e java 7 no momento).
Estou tentando instalar o java usando o software rpm e gostaria de instalar os dois em /opt
.
Eu baixei os pacotes necessários do site da Oracle:
jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm
e extraiu o pacote rpm de dentro do arquivo .bin
em execução
./jdk-6u30-linux-x64-rpm.bin -x
obtendo a seguinte situação:
jdk-6u30-linux-amd64.rpm
jdk-7u2-linux-x64.rpm
Então eu olhei dentro de jdk-6u30-linux-amd64.rpm
com:
rpm -qpl ~/Downloads/jdk-7u2-linux-x64.rpm
e obteve que o java 6 instalará seus arquivos em:
/etc (some files)
/usr/java/jdk1.6.0\_30 (the majority of the files)
De maneira semelhante, o java 7 será instalado em:
/etc
/usr/java/jdk1.7.0\_02
Como eu quero instalar em /opt
, tentei instalar usando a relocação de rpm .
Ambos os pacotes parecem ser realocáveis, na verdade:
rpm -qpi ~/Downloads/jdk-6u30-linux-amd64.rpm | grep -i reloc
dá como resultado
Relocations : /usr/java
e
rpm -qpi ~/Downloads/jdk-7u2-linux-x64.rpm | grep -i reloc
dá como resultado
Relocations : /usr/java
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm
isto corre quase suavemente porque o rpm diz
ln: failed to create symbolic link '/usr/java/jdk1.6.0\_30': No such file or directory'
rpm -q jdk
diz
jdk-1.6.0\_30-fcs.x86\_64_ ... OK!
então
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm
falha tremendamente ao dizer:
file /etc/init.d/jexec from install of
jdk-2000:1.7.0\_02-fcs.x86\_64* conflicts with file from package
jdk-2000:1.6.0\_30-fcs.x86\_64*
tendo instalado o java 6, removo-o primeiro:
sudo rpm -e jdk*
sudo rpm -q jdk*
dá:
package jdk is not installed* <- OK, uninstalled!
então vamos tentar instalar o java 7
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm*
apresenta o erro habitual:
ln: failed to create symbolic link '/usr/java/jdk1.7.0_02': No such file or directory'*
e agora o java 6
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm*
falha em dizer duas coisas:
package jdk-2000:1.7.0\_02-fcs.x86\_64 (which is newer than jdk-2000:1.6.0\_30-fcs.x86\_64) is already installed*
e
file /etc/init.d/jexec from install of jdk-2000:1.6.0\_30-fcs.x86\_64
conflicts with file from package jdk-2000:1.7.0\_02-fcs.x86\_64*
Minhas perguntas são:
PS: esta é a minha primeira pergunta aqui. Peço desculpas antecipadamente se algo está errado (do meu inglês para a formatação e qualquer coisa) PS2: Eu tentei adicionar a tag sun-java7-jdk a essa pergunta, mas não tenho reputação suficiente para fazê-lo ... essa tag deve ser criada?
Eu tive problemas parecidos com a existência do Oracle java e do OpenJDK lado a lado no Fedora 16. Eu segui o guia em Se não for True, então False e funcionou perfeitamente.
Esta é a maneira mais simples, quando você recebe este erro:
package jdk.... (which is newer than jdk...) is already installed
Use o sinalizador --force
para instalar várias versões.
Então, por exemplo:
sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm
jdk-7u2-linux-x64.rpm
é mais recente que jdk-6u30-linux-amd64.rpm
e a ferramenta de gerenciamento de pacotes RPM é inteligente o suficiente para sobrescrevê-lo com a versão mais recente.
A maneira mais fácil de instalar o sun java 6 e o sun java 7 lado-a-lado é fazer o download dos tarballs Java do Oracle e extraí-los em /opt
Eu acho que o Dejan está correto sobre a instalação dos tarballs Java em vez do RPM. Se você configurou o JAVA_HOME
e o PATH
corretamente, a maioria dos usos não precisará da configuração adicional que a instalação do RPM oferece (veja esta página para detalhes do que o jexec realmente faz ).
Um problema pode ser que algumas versões do JDK não disponibilizam um tarball ( *.tar.gz
), mas apenas fornecem *-rpm.bin
e *.bin
. Nesse caso, o arquivo *.bin
é, na verdade, apenas um archive de auto-extração que resulta no diretório usual JAVA_HOME quando você o executa.
Para instalar o Java Runtime Environment no Fedora, no Oracle Linux, no Red Hat Enterprise Linux, etc.
# yum install java-1.7.0-openjdk
Para instalar um pacote para desenvolver programas usando o Java no Fedora, o Oracle Linux, o Red Hat Enterprise Linux, etc.
# yum install java-1.7.0-openjdk-devel
de link
Tags java rpm linux sun-java6-jdk fedora-16