답변

답변

sqlite 3.4 버전에 의존하는 RHEL5에 타사 RPM 패키지를 설치하려고 합니다. Yum에 따르면 3.3.6이 설치되어 있습니다.

sqlite 3.3.6에 의존하는 설치된 패키지를 나열하는 방법이 있습니까?

답변1

답변

repoquery -q --installed --whatrequires sqlite

설명하다

또 다른 명령이 있지만 rpm -q --whatrequires sqlite패키지 이름에 대한 종속성만 보고하므로 실제로 작동하지 않습니다.

반대로, repoquery명시적이지 않은 종속성도 찾습니다. 매뉴얼 페이지에서 발췌:

   --alldeps
          When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (e.g. files and Provides  in  addition  to  package  names).
          This is the default.

패키지를 구해보자 libdb.

# rpm -q --whatrequires libdb
no package requires libdb

를 신뢰하면 rpm패키지 종속성이 없으므로 libdb문제 없이 제거할 수 있습니다. 하지만...

# yum remove -y libdb
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package libdb.x86_64 0:5.3.21-19.el7 will be erased
--> Processing Dependency: libdb(x86-64) = 5.3.21-19.el7 for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: pam-1.1.8-12.el7_1.1.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-python-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: python-libs-2.7.5-39.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-devel-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: iproute-3.10.0-54.el7_2.1.x86_64
--> Running transaction check
. . .
. . .
. . .
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected

보시다시피 일부 다른 패키지는 package 에 직접적으로 의존하지 않고 libdbpackage 에서 제공하는 파일에 의존합니다 libdb-5.3.so()(64bit).

마지막으로, 사용되면 repoquery다음에 따라 실제 패키지 목록을 얻습니다 libdb.

# repoquery -q --installed --whatrequires libdb
cyrus-sasl-lib-0:2.1.26-20.el7_2.x86_64
iproute-0:3.10.0-54.el7_2.1.x86_64
libdb-utils-0:5.3.21-19.el7.x86_64
pam-0:1.1.8-12.el7_1.1.x86_64
postfix-2:2.10.1-6.el7.x86_64
python-libs-0:2.7.5-39.el7_2.x86_64
rpm-0:4.11.3-17.el7.x86_64
rpm-build-libs-0:4.11.3-17.el7.x86_64
rpm-devel-0:4.11.3-17.el7.x86_64
rpm-libs-0:4.11.3-17.el7.x86_64
rpm-python-0:4.11.3-17.el7.x86_64

답변2

원하는 rpm 옵션은 다음과 같습니다.

rpm -q --whatrequires sqlite

편집: 다른 답변/댓글의 토론을 기반으로 --install 추가됨

편집: rpm에 유효하지 않은 옵션이므로 제거됨 --installed

답변3

dnf (yum의 새 버전)의 경우 다음을 사용해 볼 수 있습니다.다시 찾아봐래퍼 명령:

dnf repoquery --whatrequires sqlite

사용할 수 없는 경우 다음 명령을 사용하여 설치할 수 있습니다.

dnf -y install dnf-plugins-core

답변4

여러분이 정말로 알고 싶은 것은 "어떤 패키지에 sqlite-3.3.6이 필요하지만 sqlite-3.4.z에 만족하지 않는지"라고 생각합니다... 알아낼 수 있는 유일한 좋은 방법은 시도해 보는 것입니다. 좋다:

echo | yum upgrade sqlite

관련 정보