我有自己的 APT 仓库,里面存放着我创建/打包的自定义 DEB。这个仓库中有一组 DEB 包,它们的控制文件中有以下内容
Package: my-foo-<type>
Architecture: any
Section: admin
Provides: my-foo
Conflicts: my-foo
其中<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.
我在同一个 repo 中还有另一个包,它的控制文件中有这个包Depends: my-foo
。我以为当我尝试安装这个包而没有明确指定my-foo
要使用哪个虚拟版本时,系统也会提示我进行选择。然而,我得到的并不是这个 - apt 似乎选择了第一个满足虚拟包名称的包。
有没有办法强制实现所需的行为?
答案1
我预计,当我尝试安装此包而没有明确指定要使用哪种 my-foo 虚拟风格时,系统也应该提示我进行选择。
apt 没有提供这样的机制。我不确定对此还能说些什么。您期待的是不存在的东西。apt 中没有提供此类提示的代码。
正如 @James S. 指出的那样,如果给出了替代方案并且其选择能够满足所有依赖关系,它将优先选择第一个非虚拟替代方案。否则,依赖解析器将在没有提示的情况下找到解决方案。