Debian

跨發行版的包版本控制

  • April 19, 2018

目標是在基於 RPM 的 Fedora、CentOS、RedHat 等發行版中辨識軟體包版本。我可以依賴上游版本在所有發行版上都相同嗎?如果是,那麼如何從命令行檢索(RPM 或 DEB)上游版本號?


不能將其發佈為 aswer –>

如果在 .spec 文件中指定了自動依賴項,則 rpm -qp -requires .rpm 中列出的這些依賴項是虛擬包。這些虛擬包不是庫 soname,而只是虛擬包名稱(即使它們看起來像 soname)。

例如在 Fedora 27 上,這有效

$ rpm -q --whatprovides "libQt5Core.so.5()(64bit)"        
qt5-qtbase-5.9.2-5.fc27.x86_64   

但這不是

$ rpm -q --whatprovides libQt5Core.so.5
no package provides libQt5Core.so.5
$ rpm -q --whatprovides libQt5Core
no package provides libQt5Core
$ rpm -q --whatprovides Qt5Core
no package provides Qt5Core

如果您自己的 .rpm 本身捆綁了這些庫(即提供這些虛擬包),那麼如果這些虛擬包沒有安裝在系統上,RPM 將不會抱怨,因為它們是隨您的包提供的。

您不能在任何時候依賴使用特定軟體包的相同上游版本的(所有)Linux 發行版,因為每個發行版都有自己的開發週期。

雖然您會看到跨發行版的包名稱有很多共性,但並不能保證。根據經驗,包名稱在發行版和任何派生的下游發行版中基本相同。例如,想想 Debian 和 Ubuntu,或者 Redhat 和 CentOS。

引用自:https://unix.stackexchange.com/questions/429654