installare sun java 6 e sun java 7 fianco a fianco su linux (fedora 16) usando rpm


8

Questo è ciò che vorrei ottenere, ma non ci riesco (sono un principiante in Linux).

Ho un box Fedora 16 (64 bit) e vorrei installare più versioni di Oracle Java (java 6 e java 7 per il momento). Sto provando a installare java usando il software rpm e vorrei installarli entrambi sotto /opt.

Ho scaricato i pacchetti richiesti dal sito Oracle:

jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm

ed estratto il pacchetto rpm dall'interno del .binfile in esecuzione

./jdk-6u30-linux-x64-rpm.bin -x

ottenere la seguente situazione:

jdk-6u30-linux-amd64.rpm
jdk-7u2-linux-x64.rpm

Poi ho guardato dentro jdk-6u30-linux-amd64.rpm con:

rpm -qpl ~/Downloads/jdk-7u2-linux-x64.rpm

e ottenuto che Java 6 installerà i suoi file in:

/etc                   (some files)
/usr/java/jdk1.6.0\_30 (the majority of the files)

In modo simile, java 7 verrà installato in:

/etc
/usr/java/jdk1.7.0\_02

Perché voglio installare /optho provato a installare usando il trasferimento rpm . Entrambi i pacchetti sembrano essere trasferibili in rpm, in effetti:

rpm -qpi ~/Downloads/jdk-6u30-linux-amd64.rpm | grep -i reloc

dà come risultato

Relocations : /usr/java

e

rpm -qpi ~/Downloads/jdk-7u2-linux-x64.rpm | grep -i reloc

dà come risultato

Relocations : /usr/java

Tentativo 1 (installa java 6 e quindi java 7)

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm

questo funziona quasi senza intoppi perché dice rpm

ln: failed to create symbolic link '/usr/java/jdk1.6.0\_30': No such file or directory`

rpm -q jdk

dice

jdk-1.6.0\_30-fcs.x86\_64_ ... OK!

poi

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm

fallisce tremendamente dicendo:

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*

Tentativo 2 (installa java 7 e quindi java 6)

avendo già installato java 6 lo rimuoverò per primo:

sudo rpm -e jdk*
sudo rpm -q jdk*

dà:

package jdk is not installed* <- OK, uninstalled!

quindi proviamo a installare java 7

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm*

dà il solito errore:

ln: failed to create symbolic link '/usr/java/jdk1.7.0_02': No such file or directory`*

e ora java 6

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm*

non riesce a dire due cose:

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*

Le mie domande sono:

  1. problema di creazione di collegamenti simbolici: esiste un modo per risolverlo? il processo di installazione sembra non essere consapevole del fatto che ho cercato di utilizzare il meccanismo di trasferimento, anche se il pacchetto è trasferibile (per quanto vedo)
  2. mi manca qualcosa nel processo di installazione? È davvero possibile avere sia java 6 che java 7 sulla stessa macchina Linux? Come? Che cosa sto facendo di sbagliato?
  3. C'è un altro modo per raggiungere il mio obiettivo?

PS: questa è la mia prima domanda qui. Mi scuso in anticipo se qualcosa non va (dal mio inglese alla formattazione e altro) PS2: ho provato ad aggiungere il tag sun-java7-jdk a questa domanda ma non ho abbastanza reputazione per farlo ... dovrebbe questo tag essere creato?

Risposte:


3

Ho avuto problemi simili nel far esistere Oracle Java e OpenJDK fianco a fianco su Fedora 16. Ho seguito la guida su If not True then False e ha funzionato perfettamente.


5
Potresti riassumere l'articolo qui? Preferiamo che non colleghi solo articoli qui.
Simon Sheehan,

14

Questo è il modo più semplice, quando si ottiene questo errore:

package jdk.... (which is newer than jdk...) is already installed

Utilizzare il --forceflag per installare più versioni.

Quindi per esempio:

sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm

2

jdk-7u2-linux-x64.rpmè più recente di jdk-6u30-linux-amd64.rpme lo strumento di gestione dei pacchetti RPM è abbastanza intelligente da sovrascriverlo con la versione più recente.

Il modo più semplice per installare sun java 6 e sun java 7 fianco a fianco è scaricare i tarball Java da Oracle ed estrarli in /opt


1

Penso che Dejan abbia ragione sull'installazione dei tarball Java invece che sull'RPM. Se hai impostato correttamente JAVA_HOMEe la PATHmaggior parte degli usi non avrai bisogno dell'installazione aggiuntiva che ti offre l'installazione di RPM (vedi questa pagina per i dettagli su ciò che effettivamente jexec fa ).

Un problema potrebbe essere che alcune versioni di JDK non rendono disponibile un tarball ( *.tar.gz) ma invece ti danno solo un *-rpm.bine un *.bin. In questo caso il *.binfile è in realtà solo un archivio autoestraente che risulta nella solita directory JAVA_HOME quando lo si esegue.


0

Per installare Java Runtime Environment su Fedora, Oracle Linux, Red Hat Enterprise Linux, ecc.

# yum install java-1.7.0-openjdk

Per installare il pacchetto per lo sviluppo di programmi usando Java su Fedora, Oracle Linux, Red Hat Enterprise Linux, ecc.

# yum install java-1.7.0-openjdk-devel

da http://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.