这是我的安装 JDK 的命令:rpm -ivh jdk-8u40-linux-x64.rpm
下面的是错误输出:
错误:依赖检测失败:
/usr/sbin/alternatives 被 jdk1.8.0_40-2000:1.8.0_40-fcs.x86_64 需要
我查了一下资料,现在的 opsensuse 使用的是 /usr/sbin/update-alternatives。这个错误该怎么解决的呢?
我试过将 /usr/sbin/update-alternatives 复制一份 /usr/sbin/alternatives 但是没有作用!
请问这个问题该怎么解决呢?
你的错误信息都没有贴全,请补全。。。
是用 root 执行的吗?
加上 sudo 的结果是一样的,错误信息就这么一句话!没有其他的错误输出了!
用 sudo zypper in jdk-8u40-linux-x64.rpm 试试
正在加载软件源数据…
正在读取已安装的软件包…
正在解决软件包依赖关系…
问题:没有什么能提供 /usr/sbin/alternatives,而它为 jdk1.8.0_40-2000:1.8.0_40-fcs.x86_64 所需
解决方案 1:不安装 jdk1.8.0_40-2000:1.8.0_40-fcs.x86_64
解决方案 2:通过忽略一些依赖关系来破坏 jdk1.8.0_40-2000:1.8.0_40-fcs.x86_64
这个是输出的结果?选 2 觉得不是很好,还有没有其他的解决办法呢?
你可以 sudo rpm -ivh --force 或者在 zypper 提示里选 2,然后 symlink 一个 /usr/sbin/alternatives 就可以了。
我知道有替代的方案可以安装,当时我想知道的是这种情况我该怎么做,opensuse 是 update-alternatives 而 Oracle JDK 需要的是 alternatives, 我想知道这种情况应该怎样解决!我现在已经使用 tar.gz 文件安装好了,Oracle JDK 了,但是我还是想要知道上面的那种情况该怎么解决。
是否可以将上面的这种情况归结为:某一种软件包需要一个 /usr/sbin/ 下面的命令程序来完成某种操作,但是现在这种命令升级成为其他的名字了,比如 alternatives 升级为 update-alternatives 了,这种情况应该怎么解决呢?
解决就是 symlink 啊,甲骨文又不提供 SRPM 让人重编,也没有源代码,那在用户这边解决就只有 symlink。library 又另当别论,ABI 不一样可能用不了,但 binary 基本 symlink 就可以了。
好吧,谢谢您的回答!
我也碰到了同样的问题,但是symlink之后还是报同样的错误,最后还是用tar包解压,然后用update-alternatives解决的……
我没有使用官方的 JDK 而是使用了,OpenJDK。哎,这个问题确实不好解决!不过 symlink 这个方法还是可行的(我有朋友用这个方法成功了),你可以再试一下,或许有些地方没有考虑到。
已经好了就先用着吧,等下次更新要换的时候再看