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 에 직접적으로 의존하지 않고 libdb
package 에서 제공하는 파일에 의존합니다 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