8

Это то, чего я хотел бы достичь, но у меня ничего не получается (я новичок в 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*

Мои вопросы:

  1. Проблема создания символической ссылки: есть ли способ ее исправить? процесс установки, кажется, не знает, что я пытался использовать механизм перемещения, даже если пакет перемещаем (насколько я вижу)
  2. я что-то упустил в процессе установки? Действительно ли возможно иметь и Java 6, и Java 7 на одной машине Linux? Как? Что я делаю неправильно?
  3. Есть ли другой способ достичь моей цели?

PS: это мой первый вопрос здесь. Я заранее прошу прощения, если что-то не так (от моего английского до форматирования и чего-либо еще). PS2: Я пытался добавить тег sun-java7-jdk к этому вопросу, но у меня недостаточно репутации, чтобы сделать это ... если этот тег быть создан?

5 ответов5

14

Это более простой способ, когда вы получаете эту ошибку:

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

Используйте флаг --force для установки нескольких версий.

Так, например:

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

У меня были похожие проблемы, когда Oracle, Java и OpenJDK существовали бок о бок в Fedora 16. Я следовал руководству « Если не правда, то ложно», и это сработало отлично.

2

jdk-7u2-linux-x64.rpm новее, чем jdk-6u30-linux-amd64.rpm и инструмент управления пакетами RPM достаточно умен, чтобы перезаписать его новым выпуском.

Самый простой способ установить Sun java 6 и Sun Java Java 7 рядом друг с другом - это загрузить tarball-файлы Java из Oracle и распаковать их в /opt

1

Я думаю, что Дежан прав насчет установки тарболов Java вместо RPM. Если вы правильно настроили JAVA_HOME и PATH большинству пользователей не потребуются дополнительные настройки, которые дает установка RPM (см. Эту страницу для получения подробной информации о том, что фактически делает jexec).

Одной из проблем может быть то, что некоторые версии JDK не делают тарбол (*.tar.gz) доступным, а просто дают вам *-rpm.bin и *.bin . В этом случае файл *.bin самом деле является просто самораспаковывающимся архивом, в результате которого при запуске вы получаете обычный каталог JAVA_HOME.

0

Для установки среды выполнения 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .