Debian 控制文件“提供”不满足依赖性

Jan*_*Jan 3 packaging debian

用例

gnome-core取决于gnome-shell-extensions >=3.14. 我想删除gnome-shell-extensions但为了满足依赖关系,我必须用一个虚拟包替换它。我正在使用equivs它为gnome-shell-extensions.

我的 equivs 控制文件如下:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: gnome-shell-extensions
Version: 1.0
Maintainer: Me Myself <me@myself.org>
Provides: gnome-shell-extensions
Architecture: all
Description: gnome-shell-extensions dummy package to satisfy gnome dependencies
Run Code Online (Sandbox Code Playgroud)

问题

构建的包显然提供了gnome-shell-extensions,但即使安装了它,apt仍然抱怨gnome-core : depends on: gnome-shell-extensions (>= 3.14)

我知道Version控制文件中的字段与它无关,因为它只标记了虚拟包的版本。

解决方法

我已经成功地通过使用原始包名称来伪造原始包,即Package: gnome-shell-extensions,但我宁愿保留虚拟包名称。

gnome-shell-extensions >=3.14在使用另一个包时我必须做什么才能满足依赖关系Provides: gnome-shell-extensions

Ste*_*itt 5

您现在应该可以使用 versioned Provides:

Provides: gnome-shell-extensions (= 3.14.2-1)
Run Code Online (Sandbox Code Playgroud)

dpkg1.17.11 起支持此功能,自 Debian 8 (Jessie) 起也支持此功能。Debian 政策尚未更新以考虑这种可能性,因此它仍然声称两件事不再正确:

  • Provides: 不能有版本约束;
  • 与版本约束的关系忽略虚拟包。

Bug #761219跟踪文档更新。