多个 DEB 提供虚拟包,列为 Depends

多个 DEB 提供虚拟包,列为 Depends

我有自己的 APT 仓库,里面存放着我创建/打包的自定义 DEB。这个仓库中有一组 DEB 包,它们的控制文件中有以下内容

Package: my-foo-<type>
Architecture: any
Section: admin
Provides: my-foo
Conflicts: my-foo

其中<type>是几种类型之一(例如abcdef等)。换句话说,我有多个提供相同虚拟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. 指出的那样,如果给出了替代方案并且其选择能够满足所有依赖关系,它将优先选择第一个非虚拟替代方案。否则,依赖解析器将在没有提示的情况下找到解决方案。

相关内容