我的 Debian 上有 Oracle Java 7。
我想使用 aptitude 安装 tomcat 服务器,但它一直尝试安装 icedtea 和不必要的 java 相关软件包。 aptitude 是否可以知道我已经拥有 Java 了?
注意:我使用make-jpkg
命令从存档安装 Java。
答案1
编辑:一个更简单的方法位于顶部,但是control
完整原始答案中有关文件的内容仍然相关,因此我将其保留在水平规则下方。
如果make-jpkg
已经制作了 Oracle Java .deb 文件,您可以解压它,修改它的control
文件,如下所示添加provides
指令,重新打包它,然后安装修改后的 deb。。
原答案:
使用equivs
,可以创建一个虚拟包,它的作用基本上是让 dpkg 认为已经安装了某些东西。
编写了如何开始使用“equivs”的一个很好的示例这里。
正式地,您应该首先在当前目录中
equivs-control <:pkgname>
创建一个文件。pkgname
里面有各种字段,但你只需要八个,可以简单地删除其余的。以下是您最终应该得到的虚构包的大致内容pkgname
:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: pkgname
Version: 1:42
Maintainer: Your Name <[email protected]>
Architecture: all
Description: fake pkgname to block a dumb dependency
要为 Oracle Java 执行此操作,并使其充当 openjdk 的替代品(它似乎是icedtea-netx
我使用的 in sid 的依赖项),我认为您需要provides:
在 dpkg 配置中设置该条目。所以你的控制文件看起来像:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: oracle-java
Version: 7u181-2.6.14-1
Maintainer: Joe Bob <[email protected]>
Architecture: all
Description: dummy Java package to let the system know Oracle JDK is OK to use
Provides: openjdk-7-jdk, openjdk-7-jre, openjdk-7-jre-headless
请注意最后一行的添加。如果我可以在 Markdown 中制作彩色文本,我会将其涂成红色以进行强调。
然后,根据上面链接的博客文章:
完成此操作后,您所需要做的就是发出命令
equivs-build path-to-pkgname
(最好是从同一目录),然后您将获得一个假的 deb,可以使用dpkg -i
.告别依赖。
有关该provides
指令的详细信息,请参阅:
https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides
请注意,我不确定您使用的是哪个版本的 debian,因此我不知道 OpenJDK 7、8 或其他版本是否依赖于 Icedtea。您至少应该安装 IcedTea,因为我认为 Oracle 的 JDK 没有 Web 插件。但如果你愿意,并且你确定它不会破坏任何东西,你也可以添加冰茶作为“提供”。软件包名称是(我认为 - 这取决于您的 Debian 版本)icedtea-7-plugin
。