EPEL (Extra Packages for Enterprise Linux) adds community-maintained packages on top of the base Enterprise Linux repositories. The install path depends on your distribution and major version—RHEL uses Subscription Manager or a cloud provider's Red Hat Update Infrastructure (RHUI) together with CodeReady Linux Builder, Rocky Linux and AlmaLinux install epel-release from their distribution repositories and use CRB or PowerTools to satisfy dependencies, CentOS Stream 9 also uses EPEL Next, and Oracle Linux provides its own EPEL mirror packages.
EPEL packaging policy is designed to complement Enterprise Linux repositories rather than replace packages provided by the base distribution. EPEL is community-supported; Red Hat describes it as outside normal RHEL production support scope.
Tested on: Rocky Linux 10.2 (Red Quartz); kernel 6.12.0-211.16.1.el10_2.0.1.x86_64.
EPEL installation commands by distribution
Use this table as a map, then follow the detailed steps for your distribution.
| Distribution | Versions | Dependency repository | EPEL installation method |
|---|---|---|---|
| RHEL | 8, 9, 10 | CodeReady Linux Builder | Fedora epel-release RPM |
| Rocky Linux | 8 | PowerTools | dnf install epel-release |
| Rocky Linux | 9, 10 | CRB | dnf install epel-release |
| AlmaLinux | 8 | PowerTools | dnf install epel-release |
| AlmaLinux | 9, 10 | CRB | dnf install epel-release |
| CentOS Stream | 9 | CRB | EPEL and EPEL Next |
| CentOS Stream | 10 | CRB | Standard EPEL |
| Oracle Linux | 8, 9, 10 | Oracle CodeReady Builder equivalent | Oracle EPEL release package and developer_EPEL repository |
The sections below walk through each row with verification commands you can run on your host.
What is the EPEL repository?
EPEL means Extra Packages for Enterprise Linux. The Fedora community maintains it, and it ships software that is not in the standard AppStream or BaseOS repositories—monitoring agents, network utilities, and development tools are common examples.
Packages are built for a specific Enterprise Linux major version. An EPEL 8 package expects EL8 libraries; EPEL 10 expects EL10. That is why installing the wrong epel-release build breaks dependency resolution even when the install command itself succeeds.
EPEL follows packaging guidelines intended to avoid replacing base distribution packages. In practice you should still read changelogs and test updates in a non-production environment, because community packages do not carry the same support contract as RHEL content.
Check your Linux distribution and version
Before you download a release RPM or enable a repository, confirm the Enterprise Linux major version and CPU architecture.
cat /etc/os-releaseSample output:
NAME="Rocky Linux"
VERSION="10.2 (Red Quartz)"
ID="rocky"
VERSION_ID="10.2"
PLATFORM_ID="platform:el10"The PLATFORM_ID or VERSION_ID major number must match the EPEL branch you install. EPEL 8 on EL9—or EL10 packages on EL8—leads to metadata errors or unsatisfiable dependencies.
rpm -E %rhel prints the Enterprise Linux major version:
rpm -E %rhelSample output:
10The result identifies the Enterprise Linux major version. Use it to confirm that you are installing the matching EPEL release package—for example, EPEL 10 on an EL10 host.
EPEL 10 repository configuration can also account for the Enterprise Linux minor version internally. Do not manually replace $releasever, $releasever_major, or $releasever_minor in the generated EPEL repository files.
Check architecture because repository paths include $basearch:
uname -mSample output:
x86_64aarch64 and other architectures use the same EPEL branches but different mirror paths. If a package is missing, confirm it was built for your architecture in the EPEL branch you enabled.
Install EPEL repository on RHEL-based Linux
Pick the subsection that matches your distribution. Before installing software from EPEL, verify that the matching dependency repository—CodeReady Linux Builder, CRB, PowerTools, or the Oracle equivalent—is enabled. Repository commands in this guide use the dnf command with config-manager, repolist, and install.
The epel-release package itself can often be installed before the dependency repository is enabled, but EPEL packages may fail with unresolved dependencies until the required Enterprise Linux repository is available.
Several installation methods use the dnf config-manager command. If DNF reports No such command: config-manager, install the plugin package:
dnf install dnf-plugins-coreInstall EPEL on RHEL 8, 9, and 10
| RHEL major version | CodeReady repository name | EPEL release package |
|---|---|---|
| 8 | codeready-builder-for-rhel-8-*-rpms |
epel-release-latest-8.noarch.rpm |
| 9 | codeready-builder-for-rhel-9-*-rpms |
epel-release-latest-9.noarch.rpm |
| 10 | codeready-builder-for-rhel-10-*-rpms |
epel-release-latest-10.noarch.rpm |
Confirm that the host is registered with Red Hat Subscription Management:
subscription-manager identityA registered system returns its system identity, name, organization, and organization ID.
List the currently enabled repositories:
subscription-manager repos --list-enabledDo not treat Overall Status: Disabled from subscription-manager status as a registration failure when Simple Content Access is enabled—that output is normal on many current RHEL subscriptions.
Enable the CodeReady Linux Builder repository matching the RHEL major version and system architecture.
For RHEL 10:
subscription-manager repos \
--enable "codeready-builder-for-rhel-10-$(arch)-rpms"For RHEL 9:
subscription-manager repos \
--enable "codeready-builder-for-rhel-9-$(arch)-rpms"For RHEL 8:
subscription-manager repos \
--enable "codeready-builder-for-rhel-8-$(arch)-rpms"RHEL cloud marketplace images may receive repositories through Red Hat Update Infrastructure (RHUI) instead of a conventional Subscription Manager registration.
List the available CodeReady Builder repository IDs before enabling one:
dnf repolist all | grep -i codereadyEnable the exact repository ID returned by the cloud image. For example, an AWS RHEL 9 image may use:
dnf config-manager --set-enabled codeready-builder-for-rhel-9-rhui-rpmsRepository IDs differ by RHEL version and cloud provider, so do not assume that the Subscription Manager repository name applies to an RHUI image.
Install the Fedora EPEL release package for your major version with dnf so dependencies and GPG keys are handled in one transaction. For RHEL 10:
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpmUse epel-release-latest-8.noarch.rpm or epel-release-latest-9.noarch.rpm on RHEL 8 or RHEL 9 respectively. Fedora publishes updated builds at the same permalink pattern; you do not need a minor-version-specific filename such as epel-release-10-3.
Install EPEL on Rocky Linux
Rocky Linux 8 names the dependency repository powertools. Rocky Linux 9 and 10 use crb (CodeReady Builder).
Enable the dependency repository. On Rocky Linux 10:
dnf config-manager --set-enabled crbOn Rocky Linux 8 you would run dnf config-manager --set-enabled powertools instead.
Confirm CRB is available:
dnf repolist --enabled | grep -i crbSample output:
crb Rocky Linux 10 - CRBInstall epel-release from Rocky Extras:
dnf install epel-releaseIf DNF reports no match for epel-release, check that Extras is enabled:
dnf repolist all | grep -i extrasEnable it when needed:
dnf config-manager --set-enabled extrasThen retry dnf install epel-release.
Install EPEL on AlmaLinux
The pattern matches Rocky Linux: PowerTools on AlmaLinux 8, CRB on AlmaLinux 9 and 10.
Verify whether CRB or PowerTools is already enabled:
dnf repolist --enabledEnable the dependency repository only when it is missing from that list. On AlmaLinux 9 or 10:
dnf config-manager --set-enabled crbOn AlmaLinux 8:
dnf config-manager --set-enabled powertoolsInstall the release package:
dnf install epel-releaseSome AlmaLinux epel-release builds enable helper repositories during install. Still verify CRB or PowerTools explicitly with dnf repolist --enabled before you install packages that need development headers.
AlmaLinux 10 also offers an x86_64_v2 build for systems that do not support the RHEL 10 x86_64-v3 baseline. AlmaLinux rebuilds EPEL packages for this variant.
The installation command remains the same:
dnf install epel-releaseUse packages supplied through the configured AlmaLinux and EPEL repositories rather than manually mixing standard x86_64 and x86_64_v2 RPMs.
Install EPEL on CentOS Stream
CentOS Stream is not identical to RHEL-compatible rebuilds. Fedora documents separate guidance for Stream 9.
On CentOS Stream 9, enable CRB, then install standard EPEL and EPEL Next:
dnf config-manager --set-enabled crbdnf install epel-release epel-next-releaseEPEL Next carries rebuilds tied to newer libraries on Stream. Do not install epel-next-release on RHEL, Rocky Linux, AlmaLinux, or Oracle Linux unless distribution documentation explicitly tells you to.
On CentOS Stream 10, enable CRB and install standard EPEL only:
dnf config-manager --set-enabled crbdnf install epel-releaseInstall EPEL on Oracle Linux
Oracle Linux ships its own EPEL mirror rather than reusing the Rocky epel-release workflow.
Install the release package for your major version:
dnf install oracle-epel-release-el10Use oracle-epel-release-el8 or oracle-epel-release-el9 on Oracle Linux 8 or 9.
Enable the Oracle CodeReady Builder repository matching your release.
Oracle Linux 10:
dnf config-manager --set-enabled ol10_codeready_builderOracle Linux 9:
dnf config-manager --set-enabled ol9_codeready_builderOracle Linux 8:
dnf config-manager --set-enabled ol8_codeready_builderList the available Oracle EPEL repository IDs:
dnf repolist all | grep -i epelEnable the exact ID shown on your host. For example:
dnf config-manager --set-enabled ol10_developer_EPELMinor-version-specific EPEL repository IDs can also appear, particularly on Oracle Linux 10, so inspect the locally configured IDs rather than assuming a fixed name.
Oracle's mirror contains selected EPEL packages. If dnf repoquery cannot find a package that exists on Fedora EPEL, it may simply not be mirrored on Oracle Linux. Oracle does not promise a complete byte-for-byte mirror of every Fedora EPEL package.
The examples below use the standard Fedora EPEL repository ID, epel.
On Oracle Linux, replace epel with the repository ID returned by:
dnf repolist all | grep -i epelFor example, the ID may be ol9_developer_EPEL, ol10_developer_EPEL, or a minor-version-specific Oracle Linux 10 ID.
Verify that EPEL is installed and enabled
After installation, confirm DNF sees the repository and the release package is on disk.
List enabled repositories:
dnf repolist --enabledFilter for EPEL:
dnf repolist --enabled | grep -i epelSample output on Rocky Linux 10:
epel Extra Packages for Enterprise Linux 10 - x86_64Confirm the release RPM is installed:
rpm -q epel-releaseSample output on Rocky Linux 10.2:
epel-release-10-8.el10_2.noarchOn Oracle Linux, query the Oracle release package instead—for example rpm -q oracle-epel-release-el10.
Inspect repository metadata:
dnf repoinfo epelSample output:
Repo-id : epel
Repo-name : Extra Packages for Enterprise Linux 10 - x86_64
Repo-status : enabled
Repo-filename : /etc/yum.repos.d/epel.repoOn Oracle Linux, expect repository IDs such as ol8_developer_EPEL, ol9_developer_EPEL, or ol10_developer_EPEL instead of plain epel.
Review the files the release package dropped:
ls -l /etc/yum.repos.d/Sample output:
-rw-r--r--. 1 root root 1612 Jul 10 10:33 epel.repo
-rw-r--r--. 1 root root 1714 Nov 19 2025 epel-testing.repoList all paths owned by the release package:
rpm -ql epel-releaseSample output:
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-10
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/usr/bin/crbOn Oracle Linux, use rpm -ql oracle-epel-release-el10 (or the matching EL8/EL9 package name) instead.
Search and install packages from EPEL
Limit the search to EPEL so you know which packages come from that repository:
dnf --disablerepo='*' --enablerepo='epel' list available htopSample output:
Available Packages
htop.x86_64 3.3.0-5.el10_0 epelQuery a specific package name:
dnf repoquery --repoid=epel htopSample output:
htop-0:3.3.0-5.el10_0.x86_64Install when you are satisfied with the version and origin:
dnf install htopAfter installation, dnf info shows which repository supplied the package:
dnf info htopSample output for an installed package:
Name : htop
Version : 3.3.0
From repo : epelOn systems using DNF 4, list installed packages associated with EPEL:
dnf repository-packages epel list --installedSample output:
Installed Packages
htop.x86_64 3.3.0-5.el10_0 @epelOn systems using DNF 5, the equivalent list-style command is documented in DNF 4 vs DNF 5:
dnf5 list --installed-from-repo=epelOn Oracle Linux, replace epel with the configured Oracle EPEL repository ID.
Enable or disable EPEL temporarily
You can scope EPEL to a single transaction without editing /etc/yum.repos.d/epel.repo:
dnf --enablerepo=epel install htopSkip EPEL during an update while leaving the repository installed:
dnf --disablerepo=epel updateTo disable EPEL by default but keep the configuration on disk:
dnf config-manager --set-disabled epelRe-enable it later:
dnf config-manager --set-enabled epelTemporary --enablerepo and --disablerepo flags affect only the current command. config-manager --set-disabled changes the persistent enabled= setting in the repo file. On Oracle Linux, substitute the configured developer_EPEL repository ID for epel in each command.
Troubleshoot common EPEL repository errors
No match for argument: epel-release
Confirm the distribution and Enterprise Linux major version:
cat /etc/os-releaserpm -E %rhelOn Rocky Linux and AlmaLinux, confirm that the extras repository is enabled because it provides the epel-release package:
dnf repolist all | grep -i extrasOn RHEL, dnf install epel-release may return No match for argument because the package is not provided by the standard RHEL repositories. Install the matching release RPM from Fedora as shown in the RHEL section:
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpmReplace 10 with 8 or 9 for the corresponding RHEL major version. Also confirm that the RHEL BaseOS and AppStream repositories are enabled.
Fedora's official guidance uses the release RPM for RHEL, while Rocky Linux provides epel-release through Extras.
Package requires a dependency that cannot be installed
Enable the dependency repository for your major version:
| Host type | Repository to enable |
|---|---|
| RHEL 8 | CodeReady Linux Builder |
| RHEL 9, 10 | CodeReady Linux Builder |
| Rocky / Alma 8 | PowerTools |
| Rocky / Alma 9, 10 | CRB |
| CentOS Stream 9, 10 | CRB |
| Oracle Linux | Oracle CodeReady Builder + developer_EPEL |
Then run dnf install again.
Failed to download metadata for repo epel
Refresh metadata:
dnf clean metadataForce DNF to refresh only the EPEL metadata:
dnf --refresh makecache --repo=epelOn Oracle Linux, replace epel with the configured Oracle EPEL repository ID.
Confirm that the Fedora mirror host resolves:
getent hosts mirrors.fedoraproject.orgAny valid address returned by getent confirms that the hostname resolves. No output indicates a DNS or name-service problem.
Inspect the repository and metalink configuration:
dnf repoinfo -v epelIf metadata refresh still fails, check DNS, proxy settings, TLS certificates, firewall rules, and system time. A curl -I request against a Fedora mirror may return redirects or other valid responses depending on your network path—it does not by itself prove that DNF can read EPEL metadata. Do not edit $releasever, $releasever_major, or $releasever_minor manually in epel.repo as a routine fix.
GPG key verification failed
For standard Fedora EPEL installations, confirm that the release RPM came from Fedora or your distribution's official repositories. Inspect the configured repository and GPG key:
grep -E '^\[|^gpgkey=|^gpgcheck=' /etc/yum.repos.d/epel*.repols -l /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-*Reinstall the release package if the repository file or key is missing:
dnf reinstall epel-releaseOn Oracle Linux, inspect the files installed by the Oracle release package instead:
rpm -ql oracle-epel-release-el10Then inspect the gpgkey= setting in the Oracle EPEL repository file returned by that command.
Do not permanently disable signature verification with gpgcheck=0.
Oracle uses its own release packages and developer_EPEL repositories, which mirror selected EPEL packages.
Package not found in EPEL
Not every Fedora package is ported to EPEL. Branches differ across EPEL 8, 9, and 10. Oracle's mirror is a subset. Packages are retired over time. Search with dnf --disablerepo='*' --enablerepo='epel' list available or dnf repoquery --repoid=epel instead of assuming parity with Fedora Rawhide or another EPEL major version.
| Symptom | Likely cause | Fix |
|---|---|---|
No match for argument: epel-release |
Wrong major version, disabled Extras, or RHEL host | Match EL major version; enable extras on Rocky/Alma; on RHEL use Fedora release RPM URL |
| Dependency not installable | CRB / PowerTools / CodeReady disabled | Enable the dependency repo from the table above |
| Metadata download failed | Network, proxy, or stale cache | dnf --refresh makecache --repo=epel; check getent hosts mirrors.fedoraproject.org |
| GPG check failed | Wrong or corrupted release package | Reinstall official epel-release or Oracle equivalent |
| Package missing in EPEL | Not packaged for your EL major or arch | Search EPEL branch; check Oracle mirror scope |
Remove the EPEL repository
Before removing the repository configuration, review the installed packages associated with EPEL.
On systems using DNF 4:
dnf repository-packages epel list --installedOn systems using DNF 5:
dnf5 list --installed-from-repo=epelOn Oracle Linux, replace epel with the configured Oracle EPEL repository ID.
After reviewing the installed packages, remove the Fedora EPEL release package:
dnf remove epel-releaseRemoving epel-release disables access to the repository but does not uninstall packages previously installed from it. Blindly removing every package that originated from EPEL can break applications that depend on EPEL libraries.
On Oracle Linux, remove the matching Oracle release package instead:
dnf remove oracle-epel-release-el10Use oracle-epel-release-el8 or oracle-epel-release-el9 for the corresponding Oracle Linux release.
Conclusion
Match the EPEL release package to your Enterprise Linux major version, enable CodeReady Linux Builder / CRB / PowerTools (or the Oracle equivalent) before you install dependent packages, and verify the repository with dnf repolist and dnf repoinfo before you rely on EPEL in production. Treat EPEL as community-maintained software and validate it against your support and change-management requirements.
For related repository work on RPM-based hosts, see download an RPM and dependencies with DNF when you need offline copies.

