我有自己的 APT 存储库,其中包含我创建/打包的自定义 DEB。在这个 repo 中有一组 DEB 包,它们的控制文件中有以下内容
Package: my-foo-<type>
Architecture: any
Section: admin
Provides: my-foo
Conflicts: my-foo
where<type>
是几种类型之一(例如abc
,def
等)。换句话说,我有多个提供相同虚拟包的实际my-foo
包。正如预期的那样,如果我尝试运行apt install my-foo
,我会看到预期的提示
Package my-foo is a virtual package provided by:
my-foo-abc 0.3.0-1
my-foo-def 0.4.3-1
You should explicitly select one to install.
我在同一个仓库中还有另一个包,它Depends: my-foo
在它的控制文件中。我希望当我尝试安装此软件包而没有明确指定my-foo
要使用的虚拟风味时,同样应该提示我进行选择。但是,这不是我得到的 - apt 似乎选择了第一个满足虚拟包名称的包。
有没有办法强制执行所需的行为?
apt 没有提供这样的机制。我不确定对此还能说些什么。你期待一些不存在的东西。apt 中没有代码可以提供这样的提示。
正如@James S. 指出的那样,如果给出替代方案并且所有依赖项都将通过其选择来满足,它将更喜欢第一个非虚拟替代方案。否则,依赖解析器会在不提示的情况下找到解决方案。