如何指定 deb 套件應替換為不同名稱的 deb 套件?

如何指定 deb 套件應替換為不同名稱的 deb 套件?

我正在創建一個 Debian 軟體包,它需要替換安裝它的系統上的foo現有軟體包。bar

我讀了:

https://www.debian.org/doc/debian-policy/ch-relationships.html

並得出結論,正確的條款DEBIAN/control應該如下所示:

Provides: foo
Conflicts: bar
Replaces: bar

但是,當我嘗試foo在已安裝的系統上安裝該軟體包時bar,系統會因為foobar.

如果我刪除該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

相關內容