如何使 aptitude 将 Oracle Java 识别为有效的 java 依赖项

如何使 aptitude 将 Oracle Java 识别为有效的 java 依赖项

我的 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

相关内容