![使用 rpm 在 Linux(Fedora 16)上并排安装 Sun Java 6 和 Sun Java 7](https://linux22.com/image/1304657/%E4%BD%BF%E7%94%A8%20rpm%20%E5%9C%A8%20Linux%EF%BC%88Fedora%2016%EF%BC%89%E4%B8%8A%E5%B9%B6%E6%8E%92%E5%AE%89%E8%A3%85%20Sun%20Java%206%20%E5%92%8C%20Sun%20Java%207.png)
这是我想要实现的,但我失败了(我是 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 重定位。这两个包似乎都是 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回答这个问题,但我没有足够的声誉来回答它......应该创建这个标签吗?
答案1
我在 Fedora 16 上让 Oracle Java 和 OpenJDK 共存时也遇到了类似的问题。我按照如果不是 True 则为 False并且它运行完美。
答案2
当您收到此错误时,这是更简单的方法:
package jdk.... (which is newer than jdk...) is already installed
使用--force
标志来安装多个版本。
例如:
sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm
答案3
jdk-7u2-linux-x64.rpm
比更新jdk-6u30-linux-amd64.rpm
,并且 RPM 包管理工具足够智能,可以用较新的版本覆盖它。
同时安装 sun java 6 和 sun java 7 的最简单方法是从 Oracle 下载 Java tarball 并将其提取到/opt
答案4
在 Fedora、Oracle Linux、Red Hat Enterprise Linux 等上安装 Java 运行环境。
# yum install java-1.7.0-openjdk
安装程序包在 Fedora、Oracle Linux、Red Hat Enterprise Linux 等上使用 Java 开发程序。
# yum install java-1.7.0-openjdk-devel
从http://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html