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