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。 内部にはさまざまなフィールドがありますが、必要なのは 8 つだけで、残りは削除できます。 架空のパッケージの場合、最終的に次のような内容になります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 (私が使用している sid の依存関係のようです) の代替として動作させるにはicedtea-netx、dpkg 構成でエントリを設定する必要があると思いますprovides:。そのため、制御ファイルは次のようになります。

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

最後の行が追加されていることに注目してください。マークダウンでテキストに色を付けることができれば、強調するために赤にします。

そして、上にリンクされたブログ投稿によると、

これが完了したら、コマンドを発行するだけでequivs-build path-to-pkgname(できれば同じディレクトリから)、インストール用の偽の deb が取得されますdpkg -i。依存関係とはおさらばです。

指令の詳細についてはprovides、以下を参照してください。 https://www.debian.org/doc/debian-policy/ch-relationships.html#仮想パッケージの提供

使用している Debian のバージョンがわからないので、OpenJDK 7、8、または他の何かが icedtea に依存しているかどうかはわかりません。Oracle の JDK には Web プラグインがないと思うので、少なくとも IcedTea をインストールする必要があります。ただし、必要で、何も壊れないことが確実であれば、icedtea を 'provided' として追加することもできます。パッケージ名は (Debian リリースによって異なりますが、私の考えでは) ですicedtea-7-plugin

関連情報