패키지가 설치된 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.