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")?
8 Answers
Fedora 36 or later
dnf repository-packages epel list
CentOS / RHEL / Fedora 22 or earlier
yum list installed | grep @epel
Fedora 23
dnf list installed | grep @epel
RHEL8
dnf repo-pkgs epel list installed

- 178
- 9

- 5,414
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.
Pretty-print
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|^$)'
list_ALL_AVAILABLE_from_repo
To list all available packages in a specified repository, do:
repoquery -a --repoid=REPONAME

- 3,309
-
Just a side-note: To list all packages from a specified repo, do
repoquery -qa --repoid=REPONAME
– ILMostro_7 Dec 15 '14 at 01:44 -
2This 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 02: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 01:47 -
1Unfortunately this doesn't work well if packages have been installed using dnf as yum just lists those as 'installed' and doesn't specify the repo they came from. If you have installed packages via dnf the answer from @Peque will work properly – maloo May 13 '20 at 17:12
dnf repo-pkgs <repoid> list installed
Notes
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

- 3,462
-
1Best answer, works also with RHEL 7.7
yum
. answers grepping for repo ID fails because sometimes tabulation causes packages and repos to go on different lines. This one is solid though. – akostadinov Apr 07 '20 at 12:24
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'

- 3,021
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
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

- 195
- 1
- 9
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.

- 17,130
-
3There 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.
For RHEL 8:
dnf repository-packages epel list

- 1
-
1Could you say something about what this does that none of the other answers already accomplishes? – Kusalananda Jun 02 '21 at 07:47
dnf repository-packages epel list --installed
, otherwise it lists all packages available in the repo. – bviktor Dec 02 '22 at 02:33