How can I get a list of all of the RPM packages that have been installed on my system from a particular repo (e.g., "epel")?


CentOS / RHEL / Fedora 22 or earlier

yum list installed | grep @epel

Fedora 23 or later

dnf list installed | grep @epel
|improve this answer|||||
  • 9
    This will not work. Yum will output lines to the pipe that will be broken if they get too long. So grep's input is mostly one line per package, but it could be two lines. Yum could pass "whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @epel". (Imagine the underscores as spaces.) The "@epel" is on the next line of the input grep sees. So grep is going to output that line with nothing but "@epel" but not the preceding line with the package name. – Todd Walton Mar 7 '17 at 16:09
  • You may need to run those commands as root until bugzilla.redhat.com/show_bug.cgi?id=1525645 is fixed. – proski Dec 13 '17 at 19:27
  • the yum command doesn't seem to work if one the repos is having issues. i needed this list to see if i wanted to disable the repo with issues. – Jayen Jun 11 '18 at 2:22
  • @Todd Watson I know, it is a hack, but what about "export COLUMNS=999 yum..." – Massimo Aug 20 '18 at 20:01
  • Does that work, @Massimo? That would be a nice workaround. I found also this Unix StackExchange question: unix.stackexchange.com/questions/308731/… – Todd Walton Aug 20 '18 at 21:14

As of RHEL6, as suggested in this stackoverflow answer, there's a more thorough method of doing this with yumdb:

yumdb search from_repo REPOID*

The repoid takes wild cards.


If we're going to cheat and pipe the output, then we can achieve pretty-print effect as well. Here's one using awk

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

Using egrep or grep -e

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


To list all available packages in a specified repository, do:

repoquery -a --repoid=REPONAME
|improve this answer|||||
  • Just a side-note: To list all packages from a specified repo, do repoquery -qa --repoid=REPONAME – ILMostro_7 Dec 15 '14 at 1:44
  • 2
    This is also a great answer. The output is longer than the accepted answer, but it's formatted in a nicer way. – Routhinator Jun 15 '15 at 10:31
  • Can be simplified to repoquery -a --repoid=REPONAME because according to man page -q option is for rpmquery compatibility, doesn't do anything. – Rockallite Feb 16 '17 at 2:10
  • @Rockallite is right; for dnf, the -qa actually fails. I can't upvote the comment due to previously removing the upvote :( I'm updating the answer to reflect that. – ILMostro_7 Aug 21 '18 at 1:47
dnf repo-pkgs <repoid> list installed


The command above uses DNF to list the packages installed from the <repoid>. Note repo-pkgs is just an alias of repository-packages.

From the man pages:

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

Further reading:

man dnf
|improve this answer|||||

Grepping yum's output is the most obvious way:

yum list installed | grep @epel

However, you can't display extra packages properties and it's difficult to parse with a script. The tool repoquery from the package yum-utils is the tool, but it isn't installed by default.

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

and a more complex example:

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

RHEL Server 7.5 (Maipo)

yum repo-pkgs <repoid> list installed can be used to retrieve the same info as yumdb search from_repo <repoid>, but in a different format.

# 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

Sample epel outputs:

# yumdb search from_repo epel
    from_repo = epel

    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
|improve this answer|||||

You could check the Vendor header of installed rpms.

This example lists all package from VideoLAN repository:

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

Obviously, you need to determine if the Vendor header of your repository is unique among different repositories.

|improve this answer|||||
  • 3
    There isn't a one-to-one mapping between Vendor and repos, and in some cases, the Vendor string is blank. – Lorin Hochstein Oct 13 '11 at 16:36

For people who just want to find missing repositories:

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

This should return all repositories where you have packages installed from.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.