使用rpm在Linux(fedora 16)上并排安装sun java 6和sun java 7


8

这是我想要达到的目标,但是失败了(我是Linux中的新手)。

我有一个Fedora 16盒(64位),并且想安装Oracle Java的多个版本(目前为Java 6和Java 7)。我正在尝试使用rpm软件安装Java,我想将两者都安装在/opt

我从Oracle网站下载了所需的软件包:

jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm

并从.bin正在运行的文件中提取rpm包

./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 relocation安装。实际上,这两个软件包似乎都是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`*

现在是Java 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. 我在安装过程中缺少什么吗?真的可以在同一台Linux机器上同时安装Java 6和Java 7吗?怎么样?我究竟做错了什么?
  3. 还有另一种方法可以实现我的目标吗?

PS:这是我的第一个问题。如果出现问题(从我的英语到格式等等),我会提前道歉。PS2:我试图在此问题中添加标签sun-java7-jdk,但我没有足够的声誉。被创造?

Answers:


3

在使Oracle java和OpenJDK在Fedora 16上并存时,我遇到了类似的问题。我遵循了关于If Not TrueFalse的指南,并且效果很好。


5
您能在这里总结一下文章吗?我们希望您不仅在此处链接文章。
西蒙·希恩

14

当您收到此错误时,这是​​更简单的方法:

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

使用该--force标志安装多个版本。

因此,例如:

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

2

jdk-7u2-linux-x64.rpmjdk-6u30-linux-amd64.rpmRPM软件包更新,RPM软件包管理工具足够聪明,可以用较新的版本覆盖它。

并排安装sun java 6和sun java 7的最简单方法是从Oracle下载Java tarball并将其解压缩到 /opt


1

我认为Dejan在安装Java tarball而不是RPM方面是正确的。如果您设置JAVA_HOMEPATH正确大多数使用不就是RPM安装给你所需要的额外的设置(见这个页面的什么jexec实际上做的详细信息)。

一个问题可能是JDK的某些版本没有提供tarball(*.tar.gz),而只是给您一个*-rpm.bin和一个*.bin。在这种情况下,*.bin文件实际上只是一个自解压缩的存档,运行时会生成通常的JAVA_HOME目录。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.