DEB:“提供:”字段被忽略

Cre*_*hal 4 debian packages dependencies deb apt

我需要用一个自定义的包替换一个包,它有自己的名字(foo-origpackage)。为了允许将其用作替代品,我将这Provides: origpackage一行添加到控制文件中。apt-cache show foo-origpackage列出“提供”条目就好了。但是,当我想根据 origpackage 安装文件时,它会失败(“未安装软件包 origpackage”)。

我缺少的“真实”包和虚拟包之间有什么区别吗?

编辑:

准确地说,我要替换的是用于 Squeeze 的 xen-utils-common。我的 tao-xen-utils-common 有以下control文件:

来源:tao-xen-utils-common
部分:内核
优先级:可选
维护者:Creshal <administration@tao.at>
构建依赖:debhelper
标准版本:3.8.0
主页:http://tao.at

包:tao-xen-utils-common
架构:全部
依赖:gawk、lsb-base、udev、xenstore-utils、tao-firewall
提供:xen-utils-common
冲突:xen-utils-common
替换:xen-utils-common
说明:Xen 管理工具——常用文件(修改)
 管理通过 Xen 虚拟化的系统的用户空间工具
 机监视器。
 修改为与 TAO 防火墙一起使用。

但是,安装 xen-utils-4.0 失败:

foo@bar# apt-cache showpkg tao-xen-utils-common
包:tao-xen-utils-common
版本: 
4.0.0-1tao1 (/var/lib/apt/lists/repo.tao.at_dists_stable_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 描述语言: 
                 文件:/var/lib/apt/lists/repo.tao.at_dists_stable_main_binary-amd64_Packages
                  MD5:7c2503f563fca13b33b4eb3cbcb3c129


反向取决于: 
  tao-防火墙,tao-xen-utils-common
  tao-防火墙,tao-xen-utils-common
依赖项: 
4.0.0-1tao1 - gawk (0 (null)) lsb-base (0 (null)) udev (0 (null)) xenstore-utils (0 (null)) tao-firewall (0 (null)) xen-utils -common (0 (null)) xen-utils-common (0 (null)) 
提供: 
4.0.0-1tao1 - xen-utils-common 
反向提供: 


foo@bar# apt-get install xen-utils-4.0
阅读包裹清单...完成
构建依赖树       
读取状态信息...完成
将安装以下额外的软件包:
  xen-utils-common
推荐套餐:
  xen-docs-4.0
以下软件包将被删除:
  tao-xen-utils-common
将安装以下新软件包:
  xen-utils-4.0 xen-utils-common

编辑:

foo@bar# apt-cache 策略 xen-utils-4.0
xen-utils-4.0:
  已安装:(无)
  候选人:4.0.1-4
  版本表:
     4.0.1-4 0
        500 个http://ftp.at.debian.org/debian/stable/main amd64 包
     4.0.1-4 0
        500 个http://security.debian.org/stable/updates/main amd64 包

小智 6

我花了相当多的时间调查同样的问题,得出的结论是“提供”被忽略,因为 xen-utils-4.0 有一个版本化的“取决于”xen-utils-common。

引用Debian 政策手册

Provides 字段可能不包含版本号,并且在考虑对虚拟包名称的依赖或冲突时,将不考虑提供特定虚拟包的具体包的版本号。

如果 Depends 未版本化,则提供将得到满足,但是始终未版本化的 Provides 永远无法满足版本化的 Depends。

不幸的是,除了您已经提出的解决方案之外,我没有其他解决方案:保持相同的包名称并具有更高的版本号。