EPEL (Extra Packages for Enterprise Linux) is the Fedora Project’s supplementary package repository for Red Hat Enterprise Linux and compatible systems, such as AlmaLinux and Rocky Linux. It contains programs that are not included in the distribution’s own repositories, such as htop, btop, ncdu, fail2ban or certbot. EPEL packages do not overwrite the system’s own packages, but merely supplement them; therefore, they can generally be enabled on a server without any issues.
We tested these steps on AlmaLinux 10.2 and 9.8. Run the commands as the root user or using sudo (see: Using the sudo command with examples).
1. Installing EPEL
AlmaLinux provides the EPEL configuration package in its own ‘extras’ repository, so there is no need to specify a URL:
sudo dnf install epel-release
At the end of the installation, the package displays the following message:
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.
If the extras repository is unavailable for any reason (for example, on a stripped-down image), epel-release can also be installed directly from the Fedora website:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm # AlmaLinux 10
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm # AlmaLinux 9
During the test, this package was updated to a newer version (epel-release-10-8; the version in the extras repository was 10-6); the repository configuration remains the same, and updates are now handled by dnf.
2. Enabling the CRB repository
CRB (CodeReady Builder) is one of AlmaLinux’s own repositories, containing developer libraries. Many EPEL packages are built on top of these, so it must be enabled alongside EPEL. To do this, epel-release also installs a small utility:
sudo crb enable
Enabling CRB repo
CRB repo is enabled and named: crb
Its status is displayed by the sudo crb status command. The crb command requires root privileges; without sudo, it returns a ‘Permission denied’ error.
In the test, CRB was already enabled by default on the AlmaLinux 10 cloud image, but not on AlmaLinux 9. The crb enable command can be run safely in both cases: if the repository is already active, it does not change anything. You can achieve the same result with the command dnf config-manager --set-enabled crb.
3. Verification
dnf repolist
The list should include the epel and crb repositories. On AlmaLinux 9, a repository called epel-cisco-openh264 is also included; this contains the OpenH264 video codec compiled by Cisco, but it is not required on the server.
The size of the repository is shown by the command dnf repolist -v epel. At the time of testing, EPEL 10 contained approximately 23,900 packages, whilst EPEL 9 contained approximately 26,500 packages.
4. Installing a package from EPEL
Once EPEL has been enabled, you can install packages in exactly the same way as the system’s own packages:
sudo dnf install htop ncdu btop
When installing the first EPEL package, dnf will ask whether to import the EPEL signing key (on AlmaLinux 9: Userid : "Fedora (epel9) <epel@fedoraproject.org>"; the key comes from the /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9 file on the machine); confirm this with y-nal. At the time of testing, for example, the following versions were available for AlmaLinux 10: htop 3.3.0, btop 1.4.7, ncdu 1.22, fail2ban 1.1.0, certbot 4.2.0 and the associated python3-certbot-nginx.
We have several articles on useful EPEL packages: installing and using htop, installing and configuring Fail2ban, and requesting a Let’s Encrypt certificate with Certbot.
Which package was delivered from EPEL?
dnf repository-packages epel list --installed
In short: dnf list --installed | grep @epel. The last column of the output (@epel) indicates the source:
btop.aarch64 1.4.7-1.el10_2 @epel
htop.aarch64 3.3.0-5.el10_0 @epel
ncdu.aarch64 1.22-1.el10_1 @epel
For an available package, the command dnf info htop lists which repository it comes from (Repository : epel). You can check several package names at once as follows:
dnf repoquery --repo epel --available eza btop nvtop
Only those included in EPEL are displayed: in the test, btop and nvtop are included, whilst eza is not.
Packages currently undergoing testing
The epel-testing repository contains updates intended for EPEL that are still undergoing testing, and is disabled by default. Do not enable it permanently on a production server; if you need to apply a bug fix, you can use it for the duration of a single command:
sudo dnf --enablerepo=epel-testing upgrade htop
Disabling EPEL
If you only wish to disable it temporarily (for example, to investigate a packet collision), switch off the cache and, if necessary, enable it on a per-command basis:
sudo dnf config-manager --set-disabled epel
sudo dnf --enablerepo=epel install nvtop
sudo dnf config-manager --set-enabled epel
When disabled, EPEL packages will not receive updates either. Permanent removal:
sudo dnf remove epel-release
This will only remove the repository settings. Programs installed from EPEL will remain on the machine and continue to work, but they will no longer receive updates, which poses a security risk. If you do not need them, remove them first; the command in the previous section provides the list.
Updates
EPEL packages are updated alongside the rest of the system’s packages using the dnf upgrade command, and they are also covered by automatic updates (see: System updates: dnf, apt and automatic updates).
EPEL is maintained by Fedora volunteers and is not included amongst the supported packages for AlmaLinux. Although updates to an EPEL package are rare, they can alter its behaviour; therefore, it is important to check that critical services are functioning correctly after an update. If you would prefer to leave server maintenance to us, we recommend our managed VPS service; for self-management, our KVM VPSs can also be installed with AlmaLinux.
Rocky Linux and Red Hat Enterprise Linux
On Rocky Linux, the commands are the same. On Red Hat Enterprise Linux, epel-release is not available in the Red Hat repositories: there, it must be installed from the Fedora site using the URL, whilst the CRB can be enabled using the subscription-manager repos command.
If you wish to install another PHP version or Redist in the next step, the Remi repository is based on EPEL.