首页 > 解决方案 > rpm:列出不必要的依赖项,例如 dpkg-shlibdeps 吗?

问题描述

在构建 .deb 包时,会(或可以)调用dpkg-shlibdeps以自动添加对包使用的库的依赖项。

它产生有用的输出,例如:

dpkg-shlibdeps: warning: package could avoid a useless dependency if ./foo.so were not linked against libboost_regex.so.1.62.0 (they use none of the library's symbols)

rpm 是否有等效功能?还是预先存在的平台中立工具?

标签: rpmrpmbuilddpkg

解决方案


是和不是:)

rpmbuild 自动添加 .so 依赖项。

您可以检查该rpm -qR bash列表此要求:

...
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
...

但正如您在来源中看到的那样:https ://src.fedoraproject.org/rpms/bash/blob/master/f/bash.spec没有这样的行:

Requires: libc.so.6(GLIBC_2.11)(64bit)

这适用于 .so 库、Perl 模块以及最近在 Fedora for Python 模块中。任何其他库都必须手动添加到规范文件中。

但是,这些依赖关系是在链接库上计算的,如果您链​​接到该库,但不使用该库中的任何符号,那么恐怕 RPM 世界没有任何实用程序来检测这种无用的依赖关系。


推荐阅读