如何使 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

相關內容