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
답변
답변
당신이 정말로 알고 싶어하는 것은 “sqlite-3.3.6을 필요로하는 패키지는 무엇이고 sqlite-3.4.z에 만족하지 않을 것”이라고 생각합니다. 그리고 그것을 알아내는 유일한 좋은 방법은, 시도 해봐. 처럼:
echo | yum upgrade sqlite
답변
로 웨스 Hardaker 말했다 좋은 내장 방법은 사용하는 것입니다 rpm -q --whatrequires <package>
. 문제는 데비안 / 우분투 리눅스 배포판에서 와 같이 단순한 패키지가 아닌 의존성 해결 기능으로rpm
작동 한다는 것입니다 . 다른 사람들이 지적했듯이 단순히 수행하는 것이 전체 이야기를 알려주지 않으므로 일부 사용자가을 사용하는 것이 좋습니다 . 그러나 RHEL / CentOS 7 최소 (데스크탑도 가능)에 기본적으로 설치되지 않으므로 모든 사람이 사용할 수있는 것은 아닙니다.dpkg
rpm -q --whatrequires sqlite
repoquery
repoquery
사용자는 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-utils
CentOS 7,이 패키지가 포함 된 패키지 repoquery
).