Установите Sun Java 6 и Sun Java 7 рядом друг с другом на Linux (Fedora 16), используя RPM

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 к этому вопросу, но у меня недостаточно репутации, чтобы сделать это ... если этот тег быть создан?

alfo_1205
источник

Ответы:

3

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

bfj7
источник
5
Не могли бы вы обобщить статью здесь? Мы предпочитаем, чтобы вы не просто связывали статьи здесь.
Саймон Шихан
14

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

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

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

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

sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm
Cojones
источник
2

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

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

Деяна
источник
1

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

Одной из проблем может быть то, что некоторые версии JDK не делают tarball ( *.tar.gz) доступным, а просто дают вам a *-rpm.binи a *.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

Johny
источник