repo“X”에서 설치된 모든 RPM 패키지를 나열하십시오.


답변:


45

CentOS / RHEL / Fedora 22 이하

yum list installed | grep @epel

페도라 23 이상

dnf list installed | grep @epel

8
작동하지 않습니다. Yum은 파이프에 라인을 출력하여 파이프가 너무 길면 끊어집니다. grep의 입력은 대부분 패키지 당 한 줄이지 만 두 줄일 수 있습니다. Yum은 "whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @epel"을 전달할 수 있습니다. (밑줄을 공백으로 생각하십시오.) "@epel"은 입력 grep의 다음 행에 있습니다. grep은 그 줄을 "@epel"로만 출력하고 패키지 이름을 가진 앞줄은 출력하지 않습니다.
Todd Walton

bugzilla.redhat.com/show_bug.cgi?id=1525645 가 수정 될 때까지 해당 명령을 루트로 실행해야 할 수도 있습니다 .
proski December

repos에 문제가 있으면 yum 명령이 작동하지 않는 것 같습니다. 문제가있는 리포지토리를 비활성화하려는 경우이 목록이 필요했습니다.
Jayen

@ 토드 왓슨 나는 알고있다, 그것은 해킹이지만 "내보내기 COLUMNS = 999 yum ..."는 어떻습니까
Massimo

@Massimo가 작동합니까? 좋은 해결책이 될 것입니다. 나는이 유닉스 StackExchange 질문을 발견 : unix.stackexchange.com/questions/308731/...
토드 월튼

17

이 stackoverflow 답변 에서 제안한대로 RHEL6부터 다음을 사용하여이를 수행하는보다 철저한 방법이 있습니다 yumdb.

yumdb search from_repo REPOID*

레포 이드는 와일드 카드를받습니다.

예쁜 인쇄

치트를 만들고 출력을 파이프하면 예쁜 인쇄 효과도 얻을 수 있습니다. 여기에 하나를 사용합니다awk

yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'

egrep또는 사용grep -e

yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'

list_ALL_AVAILABLE_from_repo

지정된 저장소에서 사용 가능한 모든 패키지 를 나열하려면 다음을 수행하십시오.

repoquery -a --repoid=REPONAME

그냥 사이드 노트 : 지정된 REPO에서 모든 패키지를 나열하려면이 할repoquery -qa --repoid=REPONAME
ILMostro_7

2
이것은 또한 훌륭한 답변입니다. 출력이 허용되는 답변보다 길지만 더 좋은 형식으로되어 있습니다.
Routhinator 2016 년

repoquery -a --repoid=REPONAME맨 페이지 -q옵션 에 따르면 rpmquery 호환성을위한 것이므로 아무것도하지 않기
Rockallite

@Rockallite가 옳습니다. dnf의 경우 -qa실제로 실패합니다. 이전에 내가 대답을 업데이트하고있어 upvote에를 :( 제거하는 것을 반영하기 때문에 내가 코멘트를 upvote에 수 없습니다.
ILMostro_7

11
dnf repo-pkgs <repoid> list installed

노트

위 명령은 DNF 를 사용 하여에서 설치된 패키지를 나열합니다 <repoid>. 참고 repo-pkgs는의 별칭 일뿐입니다 repository-packages.

로부터 man페이지 :

man dnf | grep "repository-packages.*list.*installed" -A 1

더 읽을 거리 :

man dnf

3

yum의 출력을 잡는 것이 가장 확실한 방법입니다.

yum list installed | grep @epel

그러나 추가 패키지 속성을 표시 할 수 없으며 스크립트로 구문 분석하기가 어렵습니다. 이 도구 repoquery패키지에서이 yum-utils도구이지만 기본적으로 설치되지 않습니다.

repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'

더 복잡한 예 :

repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'

2

RHEL 서버 7.5 (Maipo)

yum repo-pkgs <repoid> list installed와 동일한 정보를 검색하는 데 사용할 수 yumdb search from_repo <repoid>있지만 형식은 다릅니다.

# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]

Treat a repo. as a group of packages, so we can install/remove all of them

aliases: repo-packages, repository-pkgs, repository-packages

샘플 epel출력 :

# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
    from_repo = epel

supervisor-3.1.4-1.el7.noarch
    from_repo = epel


# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64            2.2.0-1.el7          @epel
supervisor.noarch      3.1.4-1.el7          @epel

1

Vendor설치된 rpm 의 헤더를 확인할 수 있습니다 .

이 예제는 VideoLAN 저장소의 모든 패키지를 나열 합니다.

 rpm -q -a --qf "%{Name}:%{Vendor}\n" \
     | grep -F ":VideoLAN Project (http://www.videolan.org)"

분명히 Vendor리포지토리 의 헤더가 다른 리포지토리 중에서 고유한지 확인해야 합니다.


3
공급 업체와 저장소 사이에 일대일 매핑이 없으며 경우에 따라 공급 업체 문자열이 비어 있습니다.
Lorin Hochstein

1

누락 된 리포지토리 만 찾으려는 사람들의 경우 :

yum list installed | awk '{print $3}' | sort | uniq

패키지가 설치된 모든 리포지토리가 반환됩니다.

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