установите Sun Java 6 и Sun Java 7 бок о бок на Linux (Fedora 16), используя RPM

36039
alfo_1205

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

8

5 ответов на вопрос

14
Cojones

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

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

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

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

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

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

Не могли бы вы обобщить статью здесь? Мы предпочитаем, чтобы вы не просто связывали статьи здесь. Simon Sheehan 12 лет назад 5
2
Dejan

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

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

1
Kevin Cross

I think Dejan is correct about installing the Java tarballs instead of the RPM. If you set up your JAVA_HOME and PATH correctly most uses will not need the additional setup that the RPM installation gives you (see this page for details of what jexec actually does).

One problem might be that some versions of the JDK do not make a tarball (*.tar.gz) available but instead just give you a *-rpm.bin and a *.bin. In this case the *.bin file is actually just a self extracting archive that results in the usual JAVA_HOME directory when you run it.

0
Johny

To install Java Runtime Environment on Fedora, Oracle Linux, Red Hat Enterprise Linux, etc.

# yum install java-1.7.0-openjdk 

To intall package to developing programs using Java on Fedora, Oracle Linux, Red Hat Enterprise Linux, etc.

# yum install java-1.7.0-openjdk-devel 

from http://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html

Похожие вопросы