rpm을 사용하여 패키지 내용을 나열하는 방법을 알고 있습니다 ( rpm -qpil package.rpm
). 그러나 파일 시스템에서 .rpm 파일의 위치를 알아야합니다. 더 우아한 해결책은 패키지 관리자를 사용하는 것입니다. 필자의 경우 YUM입니다. 이것을 달성하기 위해 YUM을 어떻게 사용할 수 있습니까?
rpm을 사용하여 패키지 내용을 나열하는 방법을 알고 있습니다 ( rpm -qpil package.rpm
). 그러나 파일 시스템에서 .rpm 파일의 위치를 알아야합니다. 더 우아한 해결책은 패키지 관리자를 사용하는 것입니다. 필자의 경우 YUM입니다. 이것을 달성하기 위해 YUM을 어떻게 사용할 수 있습니까?
답변:
yum-utils
YUM을 기반으로 하는 패키지 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
$ repoquery -lq --installed time
.
rpm -ql $PACKAGE_NAME
합니까?
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 파일의 위치를 알 필요가 없습니다.
dpkg -L
파일을 나열하기 위해 다른 패키지를 설치하지 않으려는 모든 사람들에게 해당하는 것으로 보입니다 .
rpm
(원시 패킷 매니저로서 R이 모자 에드 P의 acket의 M의 anager 참조). OP가 debian / ubuntu / .. 시스템에 dpkg
있다면 apt 의 백엔드이기 때문에 갈 길 입니다.
yum
않지만 rpm
패키지를 설치해야한다는 주요 의미가 있습니다 (OP는 명시 적으로 말하지 않았습니다) 그의 시나리오). 그는 누군가 RH 기반 패키징이 아닌 데비안 기반 패키징에 익숙한 경우에 rpm == dpkg / yum == apt 병렬 비교를 설명했습니다.
yum을 사용하여 패키지의 내용을 나열 할 수는 없지만 로컬 시스템에 .rpm 파일이있는 경우 (설치된 모든 패키지의 경우와 같이) rpm 명령을 사용하여 나열 할 수 있습니다 패키지의 내용은 다음과 같습니다.
rpm -qlp /path/to/fileToList.rpm
패키지 파일 (.rpm)이 없지만 패키지가 설치되어있는 경우 다음을 시도하십시오.
rpm -ql packageName
youdownload --urls
.
yumdownloader --urls
여기에 몇 가지 좋은 답변이 있으므로 끔찍한 답변을 제공하겠습니다.
: 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
현재 reopquery
에 통합 dnf
하고 yum
, 입력 그래서 :
dnf repoquery -l <pkg-name>
원격 저장소의 패키지 컨텐츠를 나열합니다 (아직 설치되지 않은 패키지의 경우에도)
이는 이제 기본적으로 지원되므로 기능에 별도 dnf-utils
또는 yum-utils
패키지를 설치할 필요가 없습니다.
설치된 또는 로컬 ( *.rpm
파일) 패키지의 내용 을 나열하기 위해rpm -ql
나는 그것이 yum
org dnf
( repoquery
하위 명령 아님)로 가능하다고 생각하지 않습니다.
내가 틀렸다면 저를 정정하십시오
-p
param (rpm -ql packageName
)이 없으면 rpm 파일의 위치를 알 필요가 없습니다. 패키지의 "모든"경로를 얻는 가장 쉬운 방법입니다. 출력 예는 my answer을 참조하십시오 .