Package-Management

修改 RPM 包以移除依賴項

  • March 13, 2018

tl;博士:

我們建構了一個自動檢測依賴關係的 RPM 包(文件Requires中沒有.spec)。如何從此 RPM 包中刪除依賴項。

長話短說:-> 我將動態庫與二進製文件一起發布,但 RPM 自動依賴機制顯然將發布的庫也列為依賴項。如何避免這種情況?

我不希望 rpm 自動處理這些依賴關係;您可以使用:

AutoReqProv: no

但是,我多次打包自己的二進製文件和它們所依賴的庫;rpm 從來沒有以這種方式給我帶來任何麻煩;也許您的包裝方式不是最佳的?

有關自動依賴關係的進一步閱讀:http: //ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

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

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

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