这是我想要达到的目标,但是失败了(我是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*
我的问题是:
- 符号链接创建问题:有没有办法解决?安装过程似乎并不知道我尝试使用重定位机制,即使该软件包是可重定位的(据我所知)
- 我在安装过程中缺少什么吗?真的可以在同一台Linux机器上同时安装Java 6和Java 7吗?怎么样?我究竟做错了什么?
- 还有另一种方法可以实现我的目标吗?
PS:这是我的第一个问题。如果出现问题(从我的英语到格式等等),我会提前道歉。PS2:我试图在此问题中添加标签sun-java7-jdk,但我没有足够的声誉。被创造?