私の 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
。