我正在考虑使用CentOS 7 使用 LibreSSL 代替 OpenSSL。由于这台机器运行的服务非常有限,我想知道是否可以完全删除 OpenSSL。
#> rpm -qa | grep ssl
openssl-libs-1.0.1e-42.el7.9.x86_64
openssl-1.0.1e-42.el7.9.x86_64
好的,那么尝试一下
#> rpm -q --whatrequires openssl-libs-1.0.1e-42.el7.9.x86_64
no package requires openssl-libs-1.0.1e-42.el7.9.x86_64
#> rpm -q --whatrequires openssl-1.0.1e-42.el7.9.x86_64
no package requires openssl-1.0.1e-42.el7.9.x86_64
真的吗?
#> sudo yum remove openssl-libs-1.0.1e-42.el7.9.x86_64
这给出了很多像这样的行:
--> Processing Dependency: perl(IPC::Cmd) >= 0.42 for package: perl-File-Fetch-0.42-2.el7.noarch
--> Running transaction check
---> Package perl-File-Fetch.noarch 0:0.42-2.el7 will be erased
等等令人作呕,然后
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected
我没想到会毫无怨言地删除 OpenSSL,但为什么rpm -q --whatrequires
没有报告这些依赖项呢?
如何列出直接或间接需要给定包的所有包?
我的意思是:如果要删除包 X,并且如果删除 X,包/文件 Y 将被删除,并且包 Z 依赖于 Y,那么如何列出任何给定 X 的所有此类 Z?
答案1
正如已经提到的,其他包可能需要包的“提供”列表中的文件或其他内容:
rpm -q --list openssl openssl-libs
rpm -q --provides openssl openssl-libs
看看有没有一些“需要什么”(不是全部):
rpm -e --test openssl openssl-libs
列表全部IMO 不能直接使用rpm
但以防yum
万一(未经测试):
yes "N" | yum remove openssl openssl-libs
或者
yum deplist openssl openssl-libs
或者
repoquery --alldeps --whatrequires openssl openssl-libs
答案2
这只是意味着没有人明确要求安装该软件包;但某些软件包可能依赖于这些软件包安装的文件。例如在我的机器上;没有人依赖这个包;但有些依赖于包提供的库:
$ rpm -q libopenssl1_0_0-32bit
libopenssl1_0_0-32bit-1.0.1i-18.1.x86_64 # whence this package is installed
$ rpm -q --whatrequires libopenssl1_0_0-32bit
no package requires libopenssl1_0_0-32bit
$ rpm -ql libopenssl1_0_0-32bit
/lib/engines
/lib/engines/libcapi.so
/lib/engines/libgmp.so
/lib/engines/libgost.so
/lib/engines/libpadlock.so
/lib/libcrypto.so.1.0.0
/lib/libssl.so.1.0.0
$ rpm -q --whatrequires libssl.so.1.0.0
libldap-2_4-2-32bit-2.4.41-14.1.x86_64
cups-libs-32bit-1.7.5-7.1.x86_64
编辑由于编辑的问题:
您可以使用rpm -e --test
它来找出这些转速。通过一些 bash 处理,你可以获得一个干净的列表:
$ rpm -e --test libopenssl1_0_0-32bit 2>&1 | grep needed | awk '{print $6}' | sort | uniq
cups-libs-32bit-1.7.5-7.1.x86_64
libldap-2_4-2-32bit-2.4.41-14.1.x86_64