설치된 다른 패키지에 의존하는 Yum의 패키지 나열 이미 3.3.6이 설치되어 있습니다. sqlite 3.3.6에

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

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



답변

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

rpm -q --whatrequires sqlite

편집 : 추가-다른 답변 / 의견에서 토론 당 설치

편집 : rpm에 대한 잘못된 옵션이므로 제거-설치


답변

대답

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.

package를 보자 libdb.

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

에 의존하는 패키지가 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

보시다시피 다른 패키지는 패키지가 아니라 패키지가 libdb-5.3.so()(64bit)제공 한 파일에 의존 하고 있습니다.

마지막으로 다음에 따라 실제 패키지 목록이 있습니다 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

답변

dnf (새 버전의 yum)의 경우 repoquery wrapper 명령을 사용해보십시오.

dnf repoquery --whatrequires sqlite

사용할 수없는 경우 다음 명령으로 설치할 수 있습니다.

dnf -y install dnf-plugins-core

답변

이 명령을 시도해 볼 수도 있습니다.

repoquery --whatrequires sqlite

ServerFaultFedora 포럼 에서이 명령을 받았습니다 .


답변

당신이 정말로 알고 싶어하는 것은 “sqlite-3.3.6을 필요로하는 패키지는 무엇이고 sqlite-3.4.z에 만족하지 않을 것”이라고 생각합니다. 그리고 그것을 알아내는 유일한 좋은 방법은, 시도 해봐. 처럼:

echo | yum upgrade sqlite

답변

웨스 Hardaker 말했다 좋은 내장 방법은 사용하는 것입니다 rpm -q --whatrequires <package>. 문제는 데비안 / 우분투 리눅스 배포판에서 와 같이 단순한 패키지가 아닌 의존성 해결 기능으로rpm 작동 한다는 것입니다 . 다른 사람들이 지적했듯이 단순히 수행하는 것이 전체 이야기를 알려주지 않으므로 일부 사용자가을 사용하는 것이 좋습니다 . 그러나 RHEL / CentOS 7 최소 (데스크탑도 가능)에 기본적으로 설치되지 않으므로 모든 사람이 사용할 수있는 것은 아닙니다.dpkgrpm -q --whatrequires sqliterepoqueryrepoquery

사용자는 rpm -q --provides <pkgname>패키지가 제공하는 모든 기능 rpm -q --whatrequires <capability>을 확인한 다음 설치된 기능이 필요한 패키지를 확인하는 데 사용할 수 있습니다. 이 정보는 BASH one-liner를 사용하여 간결하게 쿼리 할 수 ​​있습니다 (길이를 위해 두 줄로 구분).

capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done

여기에는 기본 제공 옵션 만 사용 rpm되므로 추가 패키지를 설치할 필요가 없습니다 (예 : yum-utilsCentOS 7,이 패키지가 포함 된 패키지 repoquery).