根据这个答案在 Ask Ubuntu 上,apt 将首先尝试安装作为选项列出的任何非虚拟软件包:
现在,根据消息来源,apt 首先尝试满足之前的依赖关系尝试与虚拟包(即,如果depends是firefox | www-browser
,则检查是否安装了任何软件包,如果都没有安装,则尝试安装firefox)。
如果没有,它将简单地迭代提供虚拟包的列表,并安装第一个可以的包:
如果非虚拟包不可用,它似乎只是迭代所有提供虚拟包的包,如果没有其他依赖关系被破坏。这种行为的其他评论证据是这这导致GrpIterator::FindPreferredPkg 函数。