![修改RPM包,去除依赖](https://linux22.com/image/129341/%E4%BF%AE%E6%94%B9RPM%E5%8C%85%EF%BC%8C%E5%8E%BB%E9%99%A4%E4%BE%9D%E8%B5%96.png)
长话短说:
我们构建了一个自动检测依赖关系的 RPM 包(文件Requires
中没有)。.spec
如何从该 RPM 包中删除依赖项。
长话短说:-> 我将动态库与二进制文件一起发布,但 RPM 自动依赖项机制显然将发布的库也列为依赖项。如何避免这种情况?
答案1
我不希望 rpm 自动处理这些依赖项;您可以使用:
AutoReqProv: no
但是,我多次打包自己的二进制文件及其依赖的库; rpm 从来没有给我带来任何那样的麻烦;也许你的包装方式不是最佳的?
有关自动依赖关系的进一步阅读:http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html
答案2
列出的这些依赖项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 不会抱怨,因为它们是随您的包一起提供的。