zainstaluj Sun Java 6 i Sun Java 7 obok siebie na Linuksie (Fedora 16), używając RPM

8

To właśnie chciałbym osiągnąć, ale mi się nie udaje (jestem nowicjuszem w Linuksie).

Mam pudełko Fedory 16 (64-bitowe) i chciałbym zainstalować wiele wersji Javy (w tej chwili java 6 i java 7). Próbuję zainstalować Javę za pomocą oprogramowania RPM i chciałbym zainstalować oba pod /opt.

Pobrałem wymagane pakiety ze strony Oracle:

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

i rozpakowałem pakiet rpm z .binuruchomionego pliku

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

uzyskanie następującej sytuacji:

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

Potem zajrzałem do środka jdk-6u30-linux-amd64.rpm z:

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

i uzyskałem, że Java 6 zainstaluje swoje pliki w:

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

W podobny sposób java 7 zainstaluje się w:

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

Ponieważ chcę zainstalować w /opt, próbowałem zainstalować przy użyciu relokacji rpm . Oba pakiety wydają się być relokowalne rpm, w rzeczywistości:

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

daje jako wynik

Relocations : /usr/java

i

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

daje jako wynik

Relocations : /usr/java

Próba 1 (zainstaluj java 6, a następnie java 7)

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

działa to prawie płynnie, ponieważ mówi rpm

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

rpm -q jdk

mówi

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

następnie

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

ogromnie zawodzi mówiąc:

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*

Próba 2 (zainstaluj java 7, a następnie java 6)

po zainstalowaniu java 6 najpierw go usunę:

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

daje:

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

spróbujmy zainstalować java 7

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

daje zwykły błąd:

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

a teraz java 6

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

nie powie dwie rzeczy:

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*

i

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*

Moje pytania to:

  1. problem z tworzeniem dowiązań symbolicznych: czy istnieje sposób, aby to naprawić? proces instalacji nie zdaje sobie sprawy, że próbowałem użyć mechanizmu relokacji, nawet jeśli pakiet jest relokowalny (o ile widzę)
  2. czy brakuje mi czegoś w procesie instalacji? Czy naprawdę jest możliwe, aby mieć zarówno java 6, jak i java 7 na tym samym komputerze z systemem Linux? W jaki sposób? Co ja robię źle?
  3. Czy istnieje inny sposób na osiągnięcie mojego celu?

PS: to jest moje pierwsze pytanie tutaj. Z góry przepraszam, jeśli coś jest nie tak (z mojego angielskiego na formatowanie i cokolwiek innego) PS2: Próbowałem dodać tag sun-java7-jdk do tego pytania, ale nie mam wystarczającej reputacji, aby to zrobić ... powinienem to zrobić bądź kreatywny?

alfo_1205
źródło

Odpowiedzi:

3

Miałem podobne problemy z tym, że Oracle Java i OpenJDK istniały obok siebie na Fedorze 16. Postępowałem zgodnie z przewodnikiem na temat Jeśli nie prawda, to False i działało to doskonale.

bfj7
źródło
5
Czy mógłbyś streścić ten artykuł tutaj? Wolimy, abyś nie tutaj linkował artykułów.
Simon Sheehan
14

Jest to prostszy sposób, gdy pojawi się ten błąd:

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

Użyj --forceflagi, aby zainstalować wiele wersji.

Na przykład:

sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm
Cojones
źródło
2

jdk-7u2-linux-x64.rpmjest nowszy niż, jdk-6u30-linux-amd64.rpma narzędzie do zarządzania pakietami RPM jest wystarczająco inteligentne, aby zastąpić je nowszą wersją.

Najprostszym sposobem na zainstalowanie Sun Javy 6 i Sun Java 7 obok siebie jest pobranie tarballów Java z Oracle i rozpakowanie ich w /opt

Dejan
źródło
1

Myślę, że Dejan ma rację, jeśli chodzi o instalowanie archiwów Java zamiast RPM. Jeśli skonfigurujesz swoje JAVA_HOMEi PATHpoprawnie, większość zastosowań nie będzie wymagała dodatkowej konfiguracji, którą zapewnia instalacja RPM (zobacz tę stronę, aby uzyskać szczegółowe informacje na temat tego, co faktycznie robi jexec ).

Jednym z problemów może być to, że niektóre wersje JDK nie udostępniają tarball ( *.tar.gz), ale zamiast tego dają ci a *-rpm.bini a *.bin. W tym przypadku *.binplik jest tak naprawdę samorozpakowującym się archiwum, którego wynikiem jest zwykły katalog JAVA_HOME podczas jego uruchamiania.

Kevin Cross
źródło
0

Aby zainstalować środowisko Java Runtime Environment w Fedorze, Oracle Linux, Red Hat Enterprise Linux itp.

# yum install java-1.7.0-openjdk

Aby zainstalować pakiet do programowania przy użyciu Java na Fedorze, Oracle Linux, Red Hat Enterprise Linux itp.

# yum install java-1.7.0-openjdk-devel

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

Johny
źródło