install sun java 6 e sun java 7 side-by-side no linux (fedora 16) usando rpm

8

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

Tentativa 1 (instale o java 6 e depois o java 7)

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*

Tentativa 2 (instale o java 7 e depois o java 6)

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:

    Problema de criação de link simbólico
  1. : Existe uma maneira de consertar isso? o processo de instalação parece não estar ciente de que eu tentou usar o mecanismo de relocação, mesmo que o pacote seja relocável (até onde eu vejo)
  2. estou faltando alguma coisa no processo de instalação? É realmente possível ter o java 6 e o java 7 na mesma máquina Linux? Como? O que estou fazendo errado?
  3. Existe outra maneira de alcançar meu objetivo?

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?

    
por alfo_1205 12.02.2012 / 01:46

5 respostas

3

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.

    
por 12.02.2012 / 05:44
14

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
    
por 13.09.2012 / 14:11
2

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

    
por 12.02.2012 / 04:12
1

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.

    
por 13.09.2013 / 11:59
0

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

    
por 26.11.2013 / 20:22