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 .bin
uruchomionego 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:
- 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ę)
- 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?
- 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?
Jest to prostszy sposób, gdy pojawi się ten błąd:
Użyj
--force
flagi, aby zainstalować wiele wersji.Na przykład:
źródło
jdk-7u2-linux-x64.rpm
jest nowszy niż,jdk-6u30-linux-amd64.rpm
a 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
źródło
Myślę, że Dejan ma rację, jeśli chodzi o instalowanie archiwów Java zamiast RPM. Jeśli skonfigurujesz swoje
JAVA_HOME
iPATH
poprawnie, 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.bin
i a*.bin
. W tym przypadku*.bin
plik jest tak naprawdę samorozpakowującym się archiwum, którego wynikiem jest zwykły katalog JAVA_HOME podczas jego uruchamiania.źródło
Aby zainstalować środowisko Java Runtime Environment w Fedorze, Oracle Linux, Red Hat Enterprise Linux itp.
Aby zainstalować pakiet do programowania przy użyciu Java na Fedorze, Oracle Linux, Red Hat Enterprise Linux itp.
z http://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html
źródło