我正在处理一些机器设置说明,但惊讶地发现它的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通常很聪明,可以弄清楚这种情况,所以为什么在这种情况下不能做到这一点?我想更好地了解为什么它会以这种方式工作,所以这种事情将来不会再次绊倒我。
查看我的apt缓存,我发现openjdk-7-jdk 7〜u3-2.1.1〜pre1-1ubuntu2取决于openjdk-7-jre,而后者又取决于openjdk-7-jre-headless,因此这种依赖关系是间接的。ant直接取决于default-jre-headless。我正在使用“精确”。我只是猜测,但是apt-get可以从ant任意开始,或者从1级依赖项开始,然后转到2级依赖项。无论如何,如果您关心软件包的最终配置(希望openjdk-7-jre-headless超过default -..- ..),则专门且单独地指定它们可能是控制它们的最佳方法。
—
约翰·格鲁伯
您仍然对该问题感兴趣吗?
—
guntbert
@guntbert当然,尽管我已经辞职了,以为没有理由。就是这样。
—
leedm777
要了解APT解析器的工作原理,请参阅
—
Lasall
apt-get install -o Debug::pkgProblemResolver=true package1 package2...
。这可能会提示您为什么它会那样工作。