RPM 종속성을 나열하는 방법?


36

프로덕션 서버는 CentOS 릴리스 5.2 (최종)를 실행 중입니다.

이미 설치된 RPM 패키지 의 모든 종속성을 어떻게 보거나 가져 오거나 나열 합니까?

예를 들어, SQLite v3.3.6이 이미 서버에 설치되어 있습니다. 이 특정 패키지의 모든 종속성을보고 싶습니다.

명령 출력은 다음과 같습니다. rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

또한 왜 sqlite-3.3.6-2여기에 2 개의 항목이 나열되어 있습니까?

답변:


28
  1. rpm -q --requires somepackagehere

  2. 하나는 i?86패키지이고 다른 하나는 x86_64패키지입니다.


내 OS는 64 비트입니다. 2 개의 아키텍처 패키지가 동일한 서버에 공존 할 수 있습니까? 동시에 2 개의 아키텍처 패키지를 갖는 목적 / 필요는 무엇입니까?
Gnanam

2
RH- / Fedora 파생 배포판은 multiarch를 지원 하므로 "아직도 비슷한"아치에 속하는 여러 패키지가 공존 할 수 있기 때문에 어느 아치에 대해서도 실행 파일을 실행할 수 있습니다.
Ignacio Vazquez-Abrams

불행하게도이 이미 로컬로 설치되는 패키지가 필요합니다 \
rogerdpack

@ rogerdpack : 네. 그것이 바로 질문이 요구 한 것입니다.
이그나시오 바스케스-아 브람스

예, 불행히도 구글이 "RPM 의존성을 나열"하면 구글이 "모든 사람을 여기로 보냅니다". 어쨌든 해당 기능을 원하는 추종자에 대한 davey의 답변을 참조하십시오.
rogerdpack

34

yum deplist명령은 어떤 rpm 이 종속성인지 보여줍니다 . expect패키지 의 예는 다음과 같습니다 (패키지를 로컬에 아직 설치하지 않은 경우에도 작동합니다).

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

이 명령이 작동하지 않습니다. 내가 뭔가 빠졌거나 명령에 빠진 것이 있습니까?
Gnanam

공간이 누락되어 죄송합니다. 명령은 yum deplist package입니다.
오전

1
+1 여기에서 YUM 사용은 재귀 적이며 'perl (COnfig :: Tiny)'또는 'libc.so (64bit)'와 같은 것을 해결하는 것이 좋습니다.
djhaskin987

6

Ignacio의 답변에 따라 다음을 수행하여 패키지의 특정 아키텍처를 볼 수 있습니다.

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

필자의 경우 i686 패키지 만 있지만 패키지와 관련된 아키텍처를 얻을 수 있습니다. --queryformat에서 얻을 수있는 다른 것에 관심이 있다면, a rpm --querytags를 발행하여 사용 가능한 변수 목록을보십시오.


1
+1 아키텍처별로 나열한 명령도 도움이됩니다.
Gnanam

3

설치된 모든 패키지를 종속성과 함께 인쇄하는 빠른 쉘 스 니펫이 있습니다.

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

사람들은 이미 다음과 같이 응답했습니다.

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

예, rpm또는 yum작동하고 질문에 올바르게 답변합니다. 사이의 주요 차이점 rpmyum냠도 설치할 수있는 패키지 쇼 라이브러리 및 / 또는 파일의 요구 사항을 충족 할 수 있다는 것입니다. 불행히도 패키지가 설치되어 있지 않으면이 방법 중 어느 것도 유용하지 않습니다. 원래 포스터는 이미 확인중인 패키지가 설치되도록 지정 했으므로이 지점은 음소거 지점입니다.

패키지가 설치되지 않은 경우 어떻게합니까? yum여전히, 그러나 간접적으로 사용될 수 있습니다. 설치 작업을 취소하여 모의 설치를 수행 할 수 있습니다.

printf n  |  yum install PKG  |  grep -- "---> Package"

예를 들면 다음과 같습니다.

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

보고 제한에 대한 훌륭한 해결 방법.
MarkHu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.