例如,awk是由original-awk、mawk和提供的虚拟包gawk。
尝试直接安装它会产生:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package awk is a virtual package provided by:
original-awk:i386 2012-12-20-4
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.1.1+dfsg-1
original-awk 2012-12-20-4
mawk 1.3.3-17ubuntu2
gawk 1:4.1.1+dfsg-1
You should explicitly select one to install.
E: Package 'awk' has no installation candidate
Run Code Online (Sandbox Code Playgroud)
然而,默认安装的包需要许多虚拟包作为依赖项,例如awk它自己需要base-files,它检查 APT 日志与一堆其他包一起安装apt-get --yes;不知何故,APT 最终会自动选择三个中的一个(我很确定那是mawk,但这不是问题的重点)。
在这种情况下,APT 如何选择特定的包进行安装?
在这种情况下,APT 如何选择要安装的特定软件包?
APT 不选择包。它说:
您应该明确选择一个进行安装。
如果您尝试手动选择软件包,则不会安装它。
对于依赖 awk 的基本文件来说,这是无关紧要的。首先,它实际上PreDepends于awk,强制 dpkg 在开始安装基础文件之前安装 awk;其次,mawk 具有优先级要求,它是在系统安装时安装的,如果您尝试删除它,它会困扰您。所以,就不要这样做。
现在,根据消息来源, apt在尝试使用虚拟软件包之前首先尝试满足依赖关系(即,如果 dependent 是,则检查是否安装了任何软件包,如果都没有安装,则尝试安装 firefox)。如果非虚拟包不可用,如果没有其他依赖项被破坏,它似乎只是迭代提供虚拟包的所有包。此行为的其他评论证据是这导致GrpIterator::FindPreferredPkg function。firefox | www-browser
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |