How to Install EPEL on CentOS Stream

Installing EPEL (Extra Packages for Enterprise Linux) on CentOS Stream provides access to over 8,000 community-maintained packages not included in the base repositories. By the end of this guide, you will enable the CodeReady Builder (CRB) repository, install EPEL (and EPEL Next on Stream 9), and verify the repositories work correctly. This five-minute process gives you immediate access to system monitoring tools, development libraries, and server utilities that complement CentOS Stream’s enterprise package set without replacing core system packages.

The Fedora Project maintains EPEL as a volunteer effort targeting CentOS Stream 9 and 10, Red Hat Enterprise Linux, and RHEL-compatible distributions. EPEL Next (available only for CentOS Stream 9) delivers package versions that maintainers build against CentOS Stream directly, while the standard EPEL repository prioritizes stability by building against RHEL.

Update CentOS Stream Before Installation

Before installing EPEL and EPEL Next, update your system fully to avoid conflicts and ensure compatibility.

Use the following command to update your system:

sudo dnf upgrade --refresh
Last metadata expiration check: 0:00:12 ago on Thu 28 Nov 2025.
Dependencies resolved.
Nothing to do.
Complete!

This command updates all packages to their latest versions before you add new repositories.

EPEL vs EPEL Next: Choose the Right Repository

CentOS Stream 9 users can choose between two EPEL variants, while CentOS Stream 10 users have access only to the standard EPEL repository. Understanding the difference helps you select the appropriate repository for your needs.

RepositoryAvailabilityBuilt AgainstBest For
EPELCentOS Stream 9 and 10Red Hat Enterprise LinuxProduction servers requiring RHEL-compatible packages
EPEL NextCentOS Stream 9 onlyCentOS Stream directlySystems tracking CentOS Stream’s development cycle

CentOS Stream 10 does not have EPEL Next as of November 2025. The Fedora Project has not announced a release timeline for EPEL Next on EL10. CentOS Stream 10 users should install only the standard EPEL repository. Maintainers build EPEL Next packages directly against CentOS Stream repositories, while they build standard EPEL packages against RHEL, which can result in compatibility differences.

For most users, the standard EPEL repository provides everything needed. Install EPEL Next only if you run CentOS Stream 9 and need packages built specifically against Stream’s repositories.

Install EPEL Repository on CentOS Stream

Step 1: Enable the CRB Repository

The CRB (CodeReady Builder) repository contains development packages and libraries that many EPEL packages depend on. Enable it before installing EPEL:

sudo dnf config-manager --set-enabled crb

This command produces no output when successful. Verify that you enabled the repository:

dnf repolist | grep crb
crb                 CentOS Stream 10 - CRB

Step 2: Install EPEL Repository

Install the EPEL repository package using the official permalink. For CentOS Stream 10:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
Last metadata expiration check: 0:02:15 ago on Thu 28 Nov 2025.
Dependencies resolved.
================================================================================
 Package              Arch       Version       Repository                 Size
================================================================================
Installing:
 epel-release         noarch     10-1.el10     @commandline               19 k

Transaction Summary
================================================================================
Install  1 Package

Total size: 19 k
Installed size: 28 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : epel-release-10-1.el10.noarch                          1/1
  Verifying        : epel-release-10-1.el10.noarch                          1/1

Installed:
  epel-release-10-1.el10.noarch

Complete!

For CentOS Stream 9, install both EPEL and EPEL Next using brace expansion:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel{,-next}-release-latest-9.noarch.rpm
Last metadata expiration check: 0:01:45 ago on Thu 28 Nov 2025.
Dependencies resolved.
================================================================================
 Package                   Arch    Version       Repository              Size
================================================================================
Installing:
 epel-release              noarch  9-8.el9       @commandline            18 k
 epel-next-release         noarch  9-8.el9       @commandline            16 k

Transaction Summary
================================================================================
Install  2 Packages

Total size: 34 k
Installed size: 40 k
Is this ok [y/N]: y

Installed:
  epel-next-release-9-8.el9.noarch
  epel-release-9-8.el9.noarch

Complete!

If you only want the standard EPEL repository on CentOS Stream 9, remove the second line from the command above.

Verify EPEL Installation

Confirm that DNF can access the EPEL repositories:

dnf repolist | grep epel

Expected output for CentOS Stream 10:

epel                    Extra Packages for Enterprise Linux 10 - x86_64

Expected output for CentOS Stream 9 (with both EPEL and EPEL Next):

epel                    Extra Packages for Enterprise Linux 9 - x86_64
epel-next               Extra Packages for Enterprise Linux 9 - Next - x86_64

Check the number of available packages in EPEL:

dnf repoinfo epel
Repo-id            : epel
Repo-name          : Extra Packages for Enterprise Linux 10 - x86_64
Repo-status        : enabled
Repo-revision      : 1732723145
Repo-updated       : Wed 27 Nov 2025 02:59:05 PM UTC
Repo-pkgs          : 8,547
Repo-available-pkgs: 8,547
Repo-size          : 11 G
Repo-baseurl       : https://download.fedoraproject.org/pub/epel/10/Everything/x86_64/
Repo-expire        : 172,800 second(s) (last: Thu 28 Nov 2025 10:15:23 AM UTC)
Repo-filename      : /etc/yum.repos.d/epel.repo

The output confirms you enabled EPEL successfully and now have access to over 8,000 additional packages.

Search and Install EPEL Packages

With EPEL enabled, you can search, install, and manage thousands of additional packages. DNF enables the EPEL repositories by default after installation.

Search for a package across all enabled repositories:

dnf search htop
======================== Name Exactly Matched: htop ========================
htop.x86_64 : Interactive process viewer

Install a package from EPEL:

sudo dnf install htop
Last metadata expiration check: 0:05:12 ago on Thu 28 Nov 2025.
Dependencies resolved.
================================================================================
 Package        Architecture    Version              Repository          Size
================================================================================
Installing:
 htop           x86_64          3.3.0-1.el10         epel               141 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 141 k
Installed size: 327 k
Is this ok [y/N]: y

Installed:
  htop-3.3.0-1.el10.x86_64

Complete!

List all packages available from EPEL:

dnf repository-packages epel list available

Check which repository provides an installed package:

dnf info htop
Installed Packages
Name         : htop
Version      : 3.3.0
Release      : 1.el10
Architecture : x86_64
Size         : 327 k
Source       : htop-3.3.0-1.el10.src.rpm
Repository   : @System
From repo    : epel
Summary      : Interactive process viewer
URL          : https://htop.dev/
License      : GPL-2.0-or-later
Description  : htop is an interactive text-mode process viewer for Linux.

The From repo: epel line confirms the package came from EPEL.

Remove EPEL from CentOS Stream

To disable EPEL repositories and remove their configuration files, uninstall the release packages. Remove the standard EPEL repository:

sudo dnf remove epel-release
Dependencies resolved.
================================================================================
 Package              Arch       Version       Repository               Size
================================================================================
Removing:
 epel-release         noarch     10-1.el10     @System                  28 k

Transaction Summary
================================================================================
Remove  1 Package

Is this ok [y/N]: y

Removed:
  epel-release-10-1.el10.noarch

Complete!

If you installed EPEL Next on CentOS Stream 9, remove it separately:

sudo dnf remove epel-next-release

Verify that you removed the repositories:

dnf repolist | grep epel
(no output - EPEL repositories successfully removed)

Removing these packages does not uninstall software you installed from EPEL. Those packages remain on your system. To remove EPEL packages as well, identify them first:

dnf list installed | grep @epel

Then remove individual packages as needed with sudo dnf remove package-name.

Troubleshoot Common EPEL Issues

CRB Repository Already Enabled

If the dnf config-manager --set-enabled crb command reports that CRB is already active, continue to the EPEL installation step. Some CentOS Stream installations enable CRB by default.

GPG Key Import Errors

When installing packages from EPEL for the first time, DNF prompts you to import the EPEL GPG key. The error message may look like this:

Importing GPG key 0x3228467C:
 Userid     : "Fedora (epel10) "
 Fingerprint: 8C17 4568 96A4 7C37 64FD 4D18 CB40 C0BA 3228 467C
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-10
Is this ok [y/N]:

Verify the fingerprint matches the official Fedora key list, then type y to continue. If the key fails to import, update the epel-release package:

sudo dnf upgrade epel-release

Mirror Connection Timeouts

If dnf fails to reach EPEL mirrors, you will see timeout errors:

Error: Failed to download metadata for repo 'epel':
Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

Check your network connection and refresh the repository metadata:

sudo dnf clean all
sudo dnf makecache
Fedora EPEL 10 - x86_64                          12 MB/s |  11 MB     00:00    
Metadata cache created.

If the issue persists, temporarily switch to the baseurl by editing /etc/yum.repos.d/epel.repo and uncommenting the baseurl line while commenting out metalink.

Package Conflicts with Base Repositories

The Fedora Project designed EPEL to complement CentOS Stream repositories without replacing core packages. If you encounter dependency conflicts, the error shows which packages conflict:

Error: 
 Problem: package example-tool-2.0 requires example-lib >= 2.0, but none of the providers can be installed
  - cannot install both example-lib-2.0 and example-lib-1.5
  - package example-lib-2.0 is filtered out by modular filtering

Check which repository provides conflicting packages:

dnf repoquery --whatprovides 'package-name'

Base CentOS Stream repositories should have higher priority than EPEL. Review repository priorities in /etc/yum.repos.d/ if needed. Most conflicts resolve by ensuring the CRB repository is enabled before installing EPEL packages that depend on development libraries.

Archived EPEL Versions

The Fedora Project archived older EPEL releases (4, 5, 6, 7) and no longer provides updates for them. Systems running these versions lack TLS 1.2 support required by modern servers, preventing direct repository access. If you must maintain legacy systems, mirror the archives locally on a newer system and configure older hosts to use that mirror.

Find archived repositories at https://dl.fedoraproject.org/pub/archive/epel/ (EPEL 4 through EPEL 7).

Conclusion

You enabled EPEL by activating the CRB repository, installing the release package, and verifying availability with dnf repolist. With 8,000+ packages now accessible, explore system monitoring tools (htop, ncdu), development libraries, or server utilities through dnf search. For production systems, audit available updates using dnf repository-packages epel list updates before applying them, and check package origins with dnf info to confirm EPEL sources. Next, consider installing Apache or PHP to leverage EPEL’s extended package ecosystem, or configure DNF automatic updates to maintain security patches.

Leave a Comment