rpm --whatrequires 보고서 종속성이 왜 지원되지 않습니까?

rpm --whatrequires 보고서 종속성이 왜 지원되지 않습니까?

사용을 고려하고 있어요CentOS 7은 OpenSSL 대신 LibreSSL을 사용합니다.. 이 시스템은 매우 제한된 서비스를 실행하고 있으므로 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이러한 종속성이 보고되지 않는 이유는 무엇입니까?

특정 패키지를 직접 또는 간접적으로 필요로 하는 모든 패키지를 나열하는 방법은 무엇입니까?

내 말은 : 만약 패키지라면

답변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이를 사용하여 이러한 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

관련 정보