패키지가 설치된 yum 저장소를 확인하는 방법은 무엇입니까?


152

yum (여러 리포지토리가 구성된 상태)으로 패키지를 설치 한 후 설치된 리포지토리에서 어떻게 찾을 수 있습니까?

yum info package-name(또는 yum list package-name)을 실행 하면 패키지가 "설치된"것만 볼 수 있습니다.


1
좋은 질문입니다! yum-utils를 설치하고 repoquery라는 유틸리티를 사용해 보았지만 운이 없습니다.
Sean Staats


@warren 귀하의 링크는 "repo가 ​​어떤 rpm에 저장되어 있는지"에 대한 질문이기 때문에이 링크는 유용하지 않지만이 질문은 "REPO가 설치된 rpm이 무엇인지"를 묻습니다. 다른 질문들.
Trevor Boyd Smith

당신이 일을하는 데 사용하는 경우 rpm -qa|grep NAME다음을 수행 할 수 있습니다 yum list installed|grep NAMERPM을가에서 무엇 REPO 찾을 .
Trevor Boyd Smith

@TrevorBoydSmith-7 년 전, 그것은 가까웠다. 오늘날 에도 여전히 비슷합니다. 결코 같은 말을하지 않았다 . 단지 관련이 있습니다.
워렌

답변:


81

yum-utils가 설치되어 있으면 repoquery는 원하는 정보를 제공합니다 (여기서 'epel'은 저장 소임).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

2
repoquery가 올바르게 작동하지 않는 것 같습니다. 다른 패키지 버전을 얻은 다음 yum info package_nameyum과 동일한 순서로 리포지토리를 쿼리하지 않는 것 같습니다.
Mike Miller

몇몇 서버에서도 마찬가지입니다. yum info package_name분명히 repoquery보다 많은 결과를 반환합니다. 이것이 스택 교환이 투표에서 잠기지 않아야하는 이유입니다.
reflexiv

8
Xiong Chiamiov의 답변이 정확하지 않다는 것을 알았습니다. repoquery -i $pkg를 설치 한 저장소 $pkg가 아니라 사용 가능한 저장소를 제공합니다 $pkg. 나는 그 명령을 rpm -qi $pkg했고 다른 버전 번호를 얻었다. rpm의 버전 번호보다 이전 버전 번호가 발생했습니다 repoquery.

로컬 사본이 오래되었거나 yum에 대한 추가 명령 (예 :)으로 설치되었을 수 --use-mirror있습니다. 나는 항상 정답을 얻는 것이 가능하다고 생각하지 않습니다 .
Xiong Chiamiov

user158844가 옳습니다. 특정 패키지가 제공되는 저장소가 아닌 특정 패키지를 제공하는 저장소가 무엇인지 알려줍니다. 당신이 특정의 repo에서 패키지를 설치 한 경우, REPO, 다음, 새로 설치 한 REPO을 나열하면 패키지로 돌아갈 것 같은 'repoquery의 -i'를 실행, 같은 이름의 패키지를 제공하는 다른 REPO 설치 한 제거 하지 사람을 그 실제로 패키지를 설치했습니다. asker는 설치된 소프트웨어가 실제로 어떤 패키지에서 왔는지 알고 싶어합니다. 현재 이름이 같은 패키지가있는 현재 저장소가 아닙니다.
토드 월튼

43

어떤 버전의 m?

설치된 패키지가 사용 가능한 최신 패키지와 동일한 버전 인 경우 현재 버전에서 설치된 리포지토리가 표시됩니다.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

사용 가능한 최신 패키지가있는 경우 새 패키지가 사용 가능한 리포지토리와 함께 별도로 표시됩니다.


CentOs 5.3에서 yum 3.2.19를 사용하고 있는데 "From repo"행이 없습니다.
lg.

그렇습니다 ... 나는 3.2.21에서 그것을 테스트하고 있는데, 그 정보는 어디에도 없습니다. 3.2.23이있는 상자에서 그것을했을 때 효과가있었습니다.
Alex

이제 이것이 최선의 솔루션이지만 RHEL / Centos 5.3에는 적용 할 수 없습니다. 이 솔루션에 동의하지만 RHEL / Centos 5.3에도 적용 할 수있는 경우 다른 답변을 선택할 준비가되었습니다.
lg.

2
이것은 CentOS 5.5에서도 마찬가지입니다.
Mike Miller

"
reprep

22

늦게 도착하지만 (적어도 Fedora 15에서) 비슷한 쿼리에 yumdb를 사용할 수 있습니다.

yumdb info 'python*'

그리고 실제로 주어진 저장소에서 패키지를 나열하는 데 필요한 것 :

yumdb search from_repo 'my-*-repo'

Fedora 14
lg

1
RHEL 6.2에서 작동
픽셀 비트

8

다른 모든 방법이 실패하면 yumdb를 수동으로 검사 할 수 있습니다. 이 /var/lib/yum/yumdb패키지는 설치된 모든 패키지에 대한 자세한 정보를 제공합니다. 에 관심이있을 것입니다 from_repo. 예를 들어, bind-utils패키지의 경우 :

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

원하는 정보 만 얻으려면 :

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

최신 버전은 더 많은 데이터를 제공합니다. 예를 들어 EL 7에서는 패키지를 다운로드 한 정확한 미러 및 URL이 여기에 저장됩니다.


+1. 그러나 for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done위의 예제에서 다음과 같이 반환하는 것이 더 좋습니다 : updates-훨씬 더 읽기 쉽습니다!
Greg Dubicki 2016 년

1
@GregDubicki 명령의 요점은 무슨 일이 일어나고 있는지와 물건이 어떻게 저장되는지에 대한 더 많은 맥락을 보여주는 것이 었습니다. 분명히 그렇게하지 못했습니다 : grep여기 에 아무것도 필요하지 않으며 루프를 삭제할 수도 있습니다. 아주 간단한 것만 cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo으로 충분합니다.
Michael Hampton

6
rpm -qi packagename

공급 업체와 포장 업체를 알려줄 것입니다


5

저장소에서 설치된 항목을 보려면 : (Centos 5.5에서 작동해야 함) 참고로, epel이라는 저장소가 없으면 설치된 모든 항목을 뱉어냅니다.

repoquery --repoid = epel -a | xargs yum 목록 설치


1
리포지토리에 업데이트 된 패키지가없는 한 작동하는 것으로 보입니다. 따라서 yum 업데이트를 사용하기 전에 실행해야합니다.
codewaggle

4

패키지가 최근에 설치 되었다면 / var / cache / yum에서 찾을 수 있습니다.

해당 디렉토리에는 각 리포지토리의 디렉토리와 그 패키지 디렉토리가 있습니다. 따라서 다음과 같은 작업을 수행합니다.

find /var/cache/yum -name [package-name]*

그러나 /etc/yum.conf 파일에서 캐시를 활성화해야합니다.

cachedir=/var/cache/yum
keepcache=1

A가 있습니다 yum clean [packages|all]캐시 디렉토리를 지 웁니다.

캐시 디렉토리가 비어 있으면 다른 방법이 있습니다. 읽은 정보는 yum info [package]/var/cache/yum/[repo]/primary.xml.gz에서 가져옵니다.

다음을 입력하여 파일을 살펴볼 수 있습니다.

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

그러나 yum info [package]'theotherreceive'로 표시된대로 "From repo :"가 표시되지 않는 시스템에서는 primary.xml 파일에 없기 때문에 해당 정보를 검색 할 방법이 없습니다. 따라서 패키지가 둘 이상의 primary.xml 파일에 있으면 시스템의 저장소 우선 순위를 결정해야합니다.


이 솔루션은 선택 사항 일 수 있지만 (투표) 결정적인 답변을 찾고 있습니다.
lg.

4

Swoogan
On RedHat과 CentOS의 답변을 바탕으로

sudo grep -ir PACKAGE_NAME /var/cache/yum/

결과는 다음과 같아야합니다

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

여기서 repository_name 은 패키지를 찾을 수있는 저장소이며 목록의 첫 번째 패키지에서 설치되었을 수 있습니다 (yum repolist 참조).


1

그 정보는 어디에서나 캡처됩니까? 패키지에는 해당 정보가 없으며 yum은 패키지를 찾은 후 신경 쓰지 않습니다. 패키지에 어떤 저장소가 있는지 파악한 다음 우선 순위가있는 패키지를 판별하여 함께 구성 할 수 있습니다.


이 솔루션은 옵션 (투표) 일 수 있지만 최근 설치된 패키지에만 해당됩니다. 저장소와 우선 순위를 변경할 수 있기 때문입니다.
lg.

1

훌륭한 해결책은 아니지만 사용 가능한 yum 목록에 각 패키지의 최신 버전이 제공되는 위치가 표시됩니다.

m 목록 사용 가능 | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

bluez-gstreamer.i386 4.30-2.fc10 업데이트
gstreamer.i386 0.10.21-2.fc10 fedora
gstreamer-devel.i386 0.10.21-2.fc10 fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 fedora
gstreamer- plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free 무료 플러그인

따라서 패키지에서 사용 가능한 yum 목록을 수행 한 다음 설치된 yum list를 사용하여 설치된 버전을 비교하고 버전이 일치하는 경우 어떤 리포지토리를 사용했는지 잘 알 수 있습니다.


패키지가 아직 설치되지 않은 경우에만 해당됩니다.
lg.

그것은 OPs 질문에 정확하게 대답하지는 않지만 yum과 다른 유틸리티가없는 Centoss 5.5에서 작동하기 때문에 매우 도움이되었습니다. 또는 2. 패키지가 설치되지 않은 다른 컴퓨터에서 쿼리합니다.
lreeder.

1

verbose 플래그를 "yum info"에 추가 할 수 있습니다 :

yum info -v <package_name>

설치 저장소는 "Repo에서"출력 아래에 있습니다.


이것은 yum-utils를 설치할 필요가없는 유일한 솔루션 인 것 같습니다.
Mark Edington

이것은 나를 위해 "설치된"만 나열합니다.
frogstarr78

1

그래서 나는 이것이 다소 오래된 질문이라는 것을 알고 있습니다. 그러나 그것은 내가 찾던 것을 구글 검색에서 나옵니다.

사용되는 고유 한 repos 목록을 얻는 방법도 있습니다.

# repoquery -ai | grep 'Repository  : ' | sort | uniq

패키지가 설치된 리포지토리가 표시됩니다.


1

추가 도구를 설치하거나 외부 정보를 greping하거나 출력하지 않고 가장 간단하고 간단한 방법은 다음과 같습니다.

yum list installed [package name]

세 번째 열은 패키지가 설치된 리포지토리의 ID를 제공합니다.

이것은 grep을 사용한 원래 질문에 대한 주석에서 언급되었지만 반드시 그럴 필요는 없습니다. 패키지 이름 yum을 필터에 직접 전달하면됩니다 .



-1

가장 쉬운 방법은 다음과 같습니다.

rpm -qa --qf '%{NAME} %{VENDOR}\n'

더 많은 팁과 요령이 여기에 있습니다 : http://wiki.centos.org/TipsAndTricks/YumAndRPM


2
이 방법으로 (grep -i 패키지 이름으로 파이프 추가) 공급 업체는 발견하지만 저장소는 발견하지 않습니다.
lg.

1
공급 업체는 리포지토리와 거의 관련이 없습니다.
Matteo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.