Debian

DEB:“提供:”欄位被忽略

  • August 18, 2017

我需要用一個自定義的包替換一個包,它有自己的名字(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-firewall,tao-xen-utils-common
tao-firewall,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](http://ftp.at.debian.org/debian/) amd64 包
4.0.1-4 0
500 [http://security.debian.org/stable/updates/main](http://security.debian.org/) amd64 包

我花了相當長的時間調查同樣的問題,我得出的結論是“Provides”被忽略了,因為 xen-utils-4.0 在 xen-utils-common 上有一個版本化的“Depends”。

引用Debian 政策手冊

Provides 欄位可能不包含版本號,在考慮對虛擬包名稱的依賴或衝突時,將不考慮提供特定虛擬包的具體包的版本號。

如果 Depends 沒有版本化,provides 就會得到滿足,但是始終沒有版本化的 Provides 永遠無法滿足版本化的 Depends。

不幸的是,除了您已經提出的解決方案之外,我沒有其他解決方案:保持相同的包名稱並具有更高的版本號。

引用自:https://serverfault.com/questions/362241