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.
| Repository | Availability | Built Against | Best For |
|---|---|---|---|
| EPEL | CentOS Stream 9 and 10 | Red Hat Enterprise Linux | Production servers requiring RHEL-compatible packages |
| EPEL Next | CentOS Stream 9 only | CentOS Stream directly | Systems 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.