我正在創建一個 Debian 軟體包,它需要替換安裝它的系統上的foo
現有軟體包。bar
我讀了:
https://www.debian.org/doc/debian-policy/ch-relationships.html
並得出結論,正確的條款DEBIAN/control
應該如下所示:
Provides: foo
Conflicts: bar
Replaces: bar
但是,當我嘗試foo
在已安裝的系統上安裝該軟體包時bar
,系統會因為foo
與bar
.
如果我刪除該Conflicts: bar
條目,則dpkg
允許兩個軟體包並排安裝,這是一個問題,因為foo
必須替換bar
.
control
實現此目的的正確文件條款是什麼?
我嘗試過Breaks
而不是Conflicts
:
dpkg: regarding foo_DEV-22._i386.deb containing foo:
foo breaks bar
bar (version 3.2.2.1-x86NX4.4-x86) is present and installed.
bar provides bar and is present and installed.
dpkg: error processing foo_DEV-22._i386.deb (--install):
installing foo would break existing software
Errors were encountered while processing:
foo_DEV-22._i386.deb
答案1
dpkg
是一個低級工具。為了獲得所需的效果,應該將套件放入儲存庫中並添加到其中,sources.list(5)
然後apt install foo
才能執行正確的操作。
答案2
為什麼不先將其重命名為現有的包,然後再將其替換為您想要的包?
為此,您必須按照以下 Debian 官方 wiki 頁面的方法/途徑:
https://wiki.debian.org/Renaming_a_Package