Centos
為什麼 rpm –whatrequires 無法報告依賴關係?
我正在考慮在 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?
如前所述,其他包可能需要包的“提供”列表中的文件或其他內容:
rpm -q --list openssl openssl-libs rpm -q --provides openssl openssl-libs
查看是否有一些“whatrequires”(不是全部):
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
這只是意味著沒有人明確要求安裝該軟體包;但是某些軟體包可能依賴於這些軟體包安裝的文件。例如在我的機器上;沒有人依賴包;但有些依賴於包提供的庫:
$ 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
找出哪些是這些 rpm。通過一些 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