Это то, чего я хотел бы достичь, но у меня ничего не получается (я новичок в Linux).
У меня есть Fedora 16 box (64-битная) и я хочу установить несколько версий oracle java (на данный момент java 6 и java 7).
Я пытаюсь установить Java с помощью программного обеспечения RPM, и я хотел бы установить их оба в /opt
.
Я скачал необходимые пакеты с сайта Oracle:
jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm
и извлек пакет rpm из запущенного файла .bin
./jdk-6u30-linux-x64-rpm.bin -x
получить следующую ситуацию:
jdk-6u30-linux-amd64.rpm
jdk-7u2-linux-x64.rpm
Затем я заглянул внутрь jdk-6u30-linux-amd64.rpm
с помощью:
rpm -qpl ~/Downloads/jdk-7u2-linux-x64.rpm
и получил, что java 6 установит свои файлы в:
/etc (some files)
/usr/java/jdk1.6.0\_30 (the majority of the files)
Аналогичным образом Java 7 будет установлен в:
/etc
/usr/java/jdk1.7.0\_02
Поскольку я хочу установить в /opt
я попытался установить, используя перемещение rpm.
Оба пакета, по-видимому, являются rpm-перемещаемыми:
rpm -qpi ~/Downloads/jdk-6u30-linux-amd64.rpm | grep -i reloc
дает в результате
Relocations : /usr/java
а также
rpm -qpi ~/Downloads/jdk-7u2-linux-x64.rpm | grep -i reloc
дает в результате
Relocations : /usr/java
Попытка 1 (установить Java 6, а затем Java 7)
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm
это работает почти гладко, потому что rpm говорит
ln: failed to create symbolic link '/usr/java/jdk1.6.0\_30': No such file or directory`
rpm -q jdk
говорит
jdk-1.6.0\_30-fcs.x86\_64_ ... OK!
затем
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm
не может сказать:
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*
Попытка 2 (установить Java 7, а затем Java 6)
установив Java 6, я сначала удалю его:
sudo rpm -e jdk*
sudo rpm -q jdk*
дает:
package jdk is not installed* <- OK, uninstalled!
тогда давайте попробуем установить Java 7
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm*
выдает обычную ошибку:
ln: failed to create symbolic link '/usr/java/jdk1.7.0_02': No such file or directory`*
а теперь ява 6
sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm*
не может сказать две вещи:
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*
а также
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*
Мои вопросы:
- Проблема создания символической ссылки: есть ли способ ее исправить? процесс установки, кажется, не знает, что я пытался использовать механизм перемещения, даже если пакет перемещаем (насколько я вижу)
- я что-то упустил в процессе установки? Действительно ли возможно иметь и Java 6, и Java 7 на одной машине Linux? Как? Что я делаю неправильно?
- Есть ли другой способ достичь моей цели?
PS: это мой первый вопрос здесь. Я заранее прошу прощения, если что-то не так (от моего английского до форматирования и чего-либо еще). PS2: Я пытался добавить тег sun-java7-jdk к этому вопросу, но у меня недостаточно репутации, чтобы сделать это ... если этот тег быть создан?