GNU/Linux >> Linux の 問題 >  >> Ubuntu

なぜAptはこの追加の依存関係が必要だと考えるのですか?

いくつかのマシンのセットアップ手順に取り組んでいますが、apt-get install A Bであることに驚きました。 apt-get install A && apt-get install Bとは異なる動作をする可能性があります 。

私の具体的な例はA == openjdk-7-jdkです。 およびB == ant

したがって、openjdk-7-jdk openjdk-7-jre-headlessに依存します 、antを満たす の依存関係java6-runtime-headless 。ただし、apt-get install openjdk-7-jdk antとしてインストールする場合 、APTはこれを理解していないようで、default-jre-headlessをインストールします 。ただし、openjdk-7-jdkをインストールする場合 antをインストールする前に 、その依存関係は満たされ、すべてが良好です。

APTは通常、この種のことを理解するのに十分賢いのですが、この場合、なぜそうできないのでしょうか。なぜこのように機能するのかをよりよく理解したいので、この種のことが将来再び私をつまずかせることはありません。

承認された回答:

ここで何らかの「ウェイト」システムが機能しているようです:

$ aptitude why ant openjdk-7-jdk
p   ant                 Recommends ant-optional       
p   ant-optional        Suggests   libgnumail-java    
p   libgnumail-java     Suggests   libgnumail-java-doc
p   libgnumail-java-doc Recommends default-jdk-doc    
p   default-jdk-doc     Depends    openjdk-7-doc      
p   openjdk-7-doc       Suggests   openjdk-7-jdk

ご覧のとおり、ant openjdk-7-jdkに依存 openjdk-6-jdkを使用する場合、複雑で複雑な量の提案、推奨事項、および依存関係が原因です。 依存関係はより直接的です:

$ aptitude why ant openjdk-6-jdk
p   ant           Suggests default-jdk | java-compiler | java-sdk
p   openjdk-6-jdk Provides java-sdk

もちろんaptitude 依存関係の解決方法は、apt-getとは異なる可能性があります の。ところで、openjdk-7-jdkをインストールせずにantのシミュレーションを実行しても、openjdk-6-jdkはプルされません:

$ sudo apt-get install ant
[sudo] password for braiam: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  ant-optional
Suggested packages:
  default-jdk java-compiler java-sdk ant-gcj ant-doc liboro-java junit
  libregexp-java jython antlr libbcel-java libjdepend-java libgnumail-java
  libcommons-net-java libjsch-java javacc ant-optional-gcj
The following NEW packages will be installed:
  ant ant-optional
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Need to get 2,234 kB of archives.
After this operation, 3,041 kB of additional disk space will be used.
Do you want to continue [Y/n]? 

たぶん、私が行ったのと同じ方法を使用すれば、私が現在Debianテストを使用していて、その間にリポジトリが変更された可能性があるので、もっと理解できるでしょう。

関連:UbuntuのエントリをUbuntuのWindows 7ブートメニューに追加するにはどうすればよいですか?
Ubuntu
  1. Linux – Apt Autoremoveがすべての古いカーネルパッケージを一度に削除しないのはなぜですか?

  2. コロンを追加するとこのGrepパターンが壊れるのはなぜですか?

  3. なぜ`exit&`が機能しないのですか?

  1. Ubuntu 14.04 Ltsが非ltsカーネルバージョンを使用するのはなぜですか?

  2. プリマスがこんなに遅く始まるのはなぜですか?

  3. Ubuntuに2つのカーネルが必要なのはなぜですか?

  1. 依存関係として必要な仮想パッケージを提供するために、Aptはインストールする特定のパッケージをどのように選択しますか?

  2. この正規表現が Linux で機能しないのはなぜですか?

  3. この ldapadd コマンドが無効な構文エラーで終了するのはなぜですか?