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