YUM을 사용하여 패키지 내용을 나열하는 방법은 무엇입니까?


320

rpm을 사용하여 패키지 내용을 나열하는 방법을 알고 있습니다 ( rpm -qpil package.rpm). 그러나 파일 시스템에서 .rpm 파일의 위치를 ​​알아야합니다. 더 우아한 해결책은 패키지 관리자를 사용하는 것입니다. 필자의 경우 YUM입니다. 이것을 달성하기 위해 YUM을 어떻게 사용할 수 있습니까?


8
-pparam ( rpm -ql packageName)이 없으면 rpm 파일의 위치를 ​​알 필요가 없습니다. 패키지의 "모든"경로를 얻는 가장 쉬운 방법입니다. 출력 예는 my answer을 참조하십시오 .
레위

안타깝게도 설치된 패키지에서만 작동합니다
WallStProg

답변:


438

yum-utilsYUM을 기반으로 하는 패키지 repoquery가 있으며이를 수행 할 수 있는 도구가 포함되어 있습니다.

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

하나의 예로 결합 :

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

rpm v4.8.0, yum v3.2.29 및 repoquery v0.0.11이있는 하나 이상의 RH 시스템에서 repoquery -l rpm아무것도 인쇄하지 않습니다.

이 문제가 발생하면 --installed플래그를 추가하십시오 : repoquery --installed -l rpm.


DNF 최신 정보:

사용하려면 dnf대신 yum-utils다음 명령을 사용합니다 :

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

12
명명 된 패키지가 실제로 존재하지 않으면이 명령은 자동으로 실패합니다.
Joshua Hoblitt

17
설치된 패키지를 더 빨리 검색하려면 --installed 옵션을 포함하십시오. 예 $ repoquery -lq --installed time.
Mohsenme

pls 참고 패키지 이름은 대소 문자를 구분합니다
Putnik

7
yum, IMO의 기능으로 추가해야합니다.
Lqueryvg

1
사용할 수 있는데 왜 새 패키지를 설치해야 rpm -ql $PACKAGE_NAME합니까?
isapir

159
rpm -ql [packageName]

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

yum-utils를 설치하거나 rpm 파일의 위치를 ​​알 필요가 없습니다.


4
이것은 dpkg -L파일을 나열하기 위해 다른 패키지를 설치하지 않으려는 모든 사람들에게 해당하는 것으로 보입니다 .
Dmitry Minkovsky

5
@dimadima : 질문에 대한이었다 되는 용도 (= RHEL 기반 시스템) rpm(원시 패킷 매니저로서 R이 모자 에드 P의 acket의 M의 anager 참조). OP가 debian / ubuntu / .. 시스템에 dpkg있다면 apt 의 백엔드이기 때문에 갈 길 입니다.
Levite

2
@Levit : dimadima가 말하려는 것은 확실히 이것이 질문에 대답하지는 않는다는 것입니다. 사용하고 있지 yum않지만 rpm패키지를 설치해야한다는 주요 의미가 있습니다 (OP는 명시 적으로 말하지 않았습니다) 그의 시나리오). 그는 누군가 RH 기반 패키징이 아닌 데비안 기반 패키징에 익숙한 경우에 rpm == dpkg / yum == apt 병렬 비교를 설명했습니다.
tne

3
^ 1 어떤 이유로 든 이것이 작동하고 허용 된 답변은 아무것도 반환하지 않기 때문에
Izkata

2
더이없는 것 같습니다 yum에 해당 rpm -ql하고 repoquery -l(에서 yum-utils각각 로컬 및 원격 파일 목록 명령 패키지).


31

yum을 사용하여 패키지의 내용을 나열 할 수는 없지만 로컬 시스템에 .rpm 파일이있는 경우 (설치된 모든 패키지의 경우와 같이) rpm 명령을 사용하여 나열 할 수 있습니다 패키지의 내용은 다음과 같습니다.

rpm -qlp /path/to/fileToList.rpm

패키지 파일 (.rpm)이 없지만 패키지가 설치되어있는 경우 다음을 시도하십시오.

rpm -ql packageName

24
패키지 파일 (.rpm을)를 필요는 없지만,이 패키지를 설치 한 경우, 시도 RPM -ql 여기서 packageName
자레드 업다이크

1
패키지가없고 패키지가 설치되어 있지 않은 경우로 패키지의 URL을 찾을 수 있습니다 youdownload --urls.
kamae

즉이어야한다yumdownloader --urls
예브게니 Sergeev

3

여기에 몇 가지 좋은 답변이 있으므로 끔찍한 답변을 제공하겠습니다.

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot

0

Yum에는 자체 패키지 유형이 없습니다. Yum은 RPM을 운영하고 관리합니다. 따라서 yum을 사용하여 사용 가능한 RPM을 나열한 다음 rpm -qlp 명령을 실행하여 해당 패키지의 내용을 볼 수 있습니다.


0

현재 reopquery에 통합 dnf하고 yum, 입력 그래서 :

dnf repoquery -l <pkg-name>

원격 저장소의 패키지 컨텐츠를 나열합니다 (아직 설치되지 않은 패키지의 경우에도)

이는 이제 기본적으로 지원되므로 기능에 별도 dnf-utils또는 yum-utils패키지를 설치할 필요가 없습니다.


설치된 또는 로컬 ( *.rpm파일) 패키지의 내용 을 나열하기 위해rpm -ql

나는 그것이 yumorg dnf( repoquery하위 명령 아님)로 가능하다고 생각하지 않습니다.

내가 틀렸다면 저를 정정하십시오

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