Установите Sun Java 6 и Sun Java 7 рядом друг с другом на Linux (Fedora 16), используя RPM
Это то, чего я хотел бы достичь, но у меня ничего не получается (я новичок в 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 к этому вопросу, но у меня недостаточно репутации, чтобы сделать это... если этот тег быть создан?
5 ответов
У меня были похожие проблемы, когда Oracle java и OpenJDK существовали бок о бок в Fedora 16. Я следовал руководству, если не правда, то ложь, и это сработало отлично.
Это более простой способ, когда вы получаете эту ошибку:
package jdk.... (which is newer than jdk...) is already installed
Использовать --force
флаг для установки нескольких версий.
Так, например:
sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm
jdk-7u2-linux-x64.rpm
новее чем jdk-6u30-linux-amd64.rpm
и инструмент управления пакетами RPM достаточно умен, чтобы перезаписать его новым выпуском.
Самый простой способ установить Sun java 6 и Sun Java Java 7 рядом друг с другом - это загрузить архивы Java из Oracle и извлечь их в /opt
Я думаю, что Дежан прав насчет установки тарболов Java вместо RPM. Если вы создали свой JAVA_HOME
а также PATH
правильно, большинству пользователей не потребуются дополнительные настройки, которые дает установка RPM (см. эту страницу для получения подробной информации о том, что на самом деле делает jexec).
Одной из проблем может быть то, что некоторые версии JDK не делают тарбол (*.tar.gz
), но вместо этого просто дать вам *-rpm.bin
и *.bin
, В этом случае *.bin
На самом деле файл - это просто самораспаковывающийся архив, который при запуске запускается в обычном каталоге JAVA_HOME.
Для установки среды выполнения Java на Fedora, Oracle Linux, Red Hat Enterprise Linux и т. Д.
# yum install java-1.7.0-openjdk
Внедрить пакет для разработки программ с использованием Java на Fedora, Oracle Linux, Red Hat Enterprise Linux и т. Д.
# yum install java-1.7.0-openjdk-devel
с http://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html