How to Install EPEL Repo on RHEL, Rocky Linux, AlmaLinux, CentOS Stream and Oracle Linux

Install EPEL on RHEL 8–10, Rocky Linux, AlmaLinux, CentOS Stream and Oracle Linux. Enable CRB or PowerTools, verify EPEL and fix repository errors.

Published

Updated

Read time 14 min read

Reviewed byDeepak Prasad

Install EPEL repository on RHEL, Rocky Linux, AlmaLinux, CentOS Stream, and Oracle Linux

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.

NOTE
CentOS Linux 7, CentOS Linux 8, and CentOS Stream 8 are end-of-life. Their corresponding EPEL repositories are archived and no longer receive normal updates. This guide focuses on maintained Enterprise Linux 8, 9, and 10 platforms. Migrate legacy CentOS hosts before enabling additional third-party repositories.

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.

bash
cat /etc/os-release

Sample output:

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:

bash
rpm -E %rhel

Sample output:

output
10

The 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:

bash
uname -m

Sample output:

output
x86_64

aarch64 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.

NOTE

Several installation methods use the dnf config-manager command. If DNF reports No such command: config-manager, install the plugin package:

bash
dnf install dnf-plugins-core

Install 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:

bash
subscription-manager identity

A registered system returns its system identity, name, organization, and organization ID.

List the currently enabled repositories:

bash
subscription-manager repos --list-enabled

Do 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:

bash
subscription-manager repos \
  --enable "codeready-builder-for-rhel-10-$(arch)-rpms"

For RHEL 9:

bash
subscription-manager repos \
  --enable "codeready-builder-for-rhel-9-$(arch)-rpms"

For RHEL 8:

bash
subscription-manager repos \
  --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
NOTE

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:

bash
dnf repolist all | grep -i codeready

Enable the exact repository ID returned by the cloud image. For example, an AWS RHEL 9 image may use:

bash
dnf config-manager --set-enabled codeready-builder-for-rhel-9-rhui-rpms

Repository 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:

bash
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm

Use 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.

NOTE
RHEL 10 also provides an Extensions repository with selected packages that originated in EPEL but are rebuilt and signed through Red Hat's secure supply chain. That content is still described as community-supported—not full RHEL production support—and it is not a complete substitute for Fedora EPEL. Extensions packages can follow different support and lifecycle expectations than standard RHEL content. Use Extensions when Red Hat documents a package there; use standard EPEL when you need the broader community catalog.

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:

bash
dnf config-manager --set-enabled crb

On Rocky Linux 8 you would run dnf config-manager --set-enabled powertools instead.

Confirm CRB is available:

bash
dnf repolist --enabled | grep -i crb

Sample output:

output
crb                       Rocky Linux 10 - CRB

Install epel-release from Rocky Extras:

bash
dnf install epel-release

If DNF reports no match for epel-release, check that Extras is enabled:

bash
dnf repolist all | grep -i extras

Enable it when needed:

bash
dnf config-manager --set-enabled extras

Then 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:

bash
dnf repolist --enabled

Enable the dependency repository only when it is missing from that list. On AlmaLinux 9 or 10:

bash
dnf config-manager --set-enabled crb

On AlmaLinux 8:

bash
dnf config-manager --set-enabled powertools

Install the release package:

bash
dnf install epel-release

Some 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.

NOTE

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:

bash
dnf install epel-release

Use 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:

bash
dnf config-manager --set-enabled crb
bash
dnf install epel-release epel-next-release

EPEL 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:

bash
dnf config-manager --set-enabled crb
bash
dnf install epel-release

Install 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:

bash
dnf install oracle-epel-release-el10

Use 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:

bash
dnf config-manager --set-enabled ol10_codeready_builder

Oracle Linux 9:

bash
dnf config-manager --set-enabled ol9_codeready_builder

Oracle Linux 8:

bash
dnf config-manager --set-enabled ol8_codeready_builder

List the available Oracle EPEL repository IDs:

bash
dnf repolist all | grep -i epel

Enable the exact ID shown on your host. For example:

bash
dnf config-manager --set-enabled ol10_developer_EPEL

Minor-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.


NOTE

The examples below use the standard Fedora EPEL repository ID, epel.

On Oracle Linux, replace epel with the repository ID returned by:

bash
dnf repolist all | grep -i epel

For 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:

bash
dnf repolist --enabled

Filter for EPEL:

bash
dnf repolist --enabled | grep -i epel

Sample output on Rocky Linux 10:

output
epel                      Extra Packages for Enterprise Linux 10 - x86_64

Confirm the release RPM is installed:

bash
rpm -q epel-release

Sample output on Rocky Linux 10.2:

output
epel-release-10-8.el10_2.noarch

On Oracle Linux, query the Oracle release package instead—for example rpm -q oracle-epel-release-el10.

Inspect repository metadata:

bash
dnf repoinfo epel

Sample output:

output
Repo-id            : epel
Repo-name          : Extra Packages for Enterprise Linux 10 - x86_64
Repo-status        : enabled
Repo-filename      : /etc/yum.repos.d/epel.repo

On 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:

bash
ls -l /etc/yum.repos.d/

Sample output:

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.repo

List all paths owned by the release package:

bash
rpm -ql epel-release

Sample output:

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/crb

On 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:

bash
dnf --disablerepo='*' --enablerepo='epel' list available htop

Sample output:

output
Available Packages
htop.x86_64                         3.3.0-5.el10_0                          epel

Query a specific package name:

bash
dnf repoquery --repoid=epel htop

Sample output:

output
htop-0:3.3.0-5.el10_0.x86_64

Install when you are satisfied with the version and origin:

bash
dnf install htop

After installation, dnf info shows which repository supplied the package:

bash
dnf info htop

Sample output for an installed package:

output
Name         : htop
Version      : 3.3.0
From repo    : epel

On systems using DNF 4, list installed packages associated with EPEL:

bash
dnf repository-packages epel list --installed

Sample output:

output
Installed Packages
htop.x86_64                                      3.3.0-5.el10_0            @epel

On systems using DNF 5, the equivalent list-style command is documented in DNF 4 vs DNF 5:

bash
dnf5 list --installed-from-repo=epel

On 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:

bash
dnf --enablerepo=epel install htop

Skip EPEL during an update while leaving the repository installed:

bash
dnf --disablerepo=epel update

To disable EPEL by default but keep the configuration on disk:

bash
dnf config-manager --set-disabled epel

Re-enable it later:

bash
dnf config-manager --set-enabled epel

Temporary --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:

bash
cat /etc/os-release
bash
rpm -E %rhel

On Rocky Linux and AlmaLinux, confirm that the extras repository is enabled because it provides the epel-release package:

bash
dnf repolist all | grep -i extras

On 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:

bash
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm

Replace 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:

bash
dnf clean metadata

Force DNF to refresh only the EPEL metadata:

bash
dnf --refresh makecache --repo=epel

On Oracle Linux, replace epel with the configured Oracle EPEL repository ID.

Confirm that the Fedora mirror host resolves:

bash
getent hosts mirrors.fedoraproject.org

Any 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:

bash
dnf repoinfo -v epel

If 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:

bash
grep -E '^\[|^gpgkey=|^gpgcheck=' /etc/yum.repos.d/epel*.repo
bash
ls -l /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-*

Reinstall the release package if the repository file or key is missing:

bash
dnf reinstall epel-release

On Oracle Linux, inspect the files installed by the Oracle release package instead:

bash
rpm -ql oracle-epel-release-el10

Then 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:

bash
dnf repository-packages epel list --installed

On systems using DNF 5:

bash
dnf5 list --installed-from-repo=epel

On Oracle Linux, replace epel with the configured Oracle EPEL repository ID.

After reviewing the installed packages, remove the Fedora EPEL release package:

bash
dnf remove epel-release

Removing 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:

bash
dnf remove oracle-epel-release-el10

Use 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.


Frequently Asked Questions

1. Do I need to enable CRB or PowerTools before installing EPEL?

EPEL itself can often be installed before CRB, PowerTools, or CodeReady Builder is enabled. However, many EPEL packages depend on libraries from those repositories. Enable the matching dependency repository before installing EPEL packages that report missing or unsatisfied dependencies.

2. Can I install EPEL 9 packages on Rocky Linux 10?

No. EPEL must match your Enterprise Linux major version. Installing epel-release built for EL9 on EL10 leaves you with broken metadata or wrong package sets. Always use the release package for your major version.

3. Does Oracle Linux use the same epel-release package as Rocky Linux?

No. Oracle publishes oracle-epel-release-el8, oracle-epel-release-el9, and the matching EL10 package, plus developer_EPEL repository IDs such as ol10_developer_EPEL. That mirror contains selected EPEL packages, not a byte-for-byte copy of Fedora EPEL.
Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with more than 15 years of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive …