我有两个 rpm 文件,每个文件包含不同版本的 Java SDK。我想安装两者,所以我安装了一个,然后安装了另一个,但是当我安装最新的一个时,它覆盖了旧的:
$ ls ./ibm-java*
./ibm-java-x86_64-sdk-6.0-16.15.x86_64.rpm
./ibm-java-x86_64-sdk-8.0-2.0.x86_64.rpm
$ sudo yum install ibm-java-x86_64-sdk-6.0-16.15.x86_64.rpm
...
$ ls /opt/ibm/
java-x86_64-60
$ sudo yum install ibm-java-x86_64-sdk-8.0-2.0.x86_64.rpm
...
$ ls /opt/ibm/
java-x86_64-80
有没有办法同时安装两者?我查看了 yum 的选项,但没有看到任何相关内容。
答案1
正如评论中所述,两个包可能使用相同的路径。例如,Java 包通常会安装(除了文件/usr/bin
)到实际文件的符号链接。您可以/usr/bin
通过某些方式在 , 或(取决于系统)中明确找到这些内容备择方案目录,例如/etc/alternatives
.
即使没有明确的冲突,打包者也可能选择将某些旧版本视为过时,并使某人很难保留旧版本。
您始终可以在安装较新的软件包之前对较旧的目录内容进行 tar,然后在安装较新的软件包后恢复它(当yum
删除较旧的软件包时)。如果您这样做,yum
将不知道旧版本,并且您可以执行任何允许应用程序使用该版本所需的操作,例如,PATH
针对特定应用程序进行设置。
答案2
这个问题很老了,但可能位于搜索结果的顶部,因此我可以为像我这样搜索此问题的其他人提供有效的答案:
yum install --setopt=installonlypkgs=jdk1.8 jdk1.8
或者,可以使用此选项将“provides”永久包含在 yum.conf 中。使用此参数时应小心 - 不确定设置它是否会显式禁用默认情况下对内核包使用此选项,因此可能会无意中对同时安装的内核包禁用此选项...