Linux·6 min read·

EPEL Repository: What It Adds and How to Enable It Safely

EPEL adds thousands of community packages to RHEL-family servers. Enable it right: base-repo priorities and package exclusions keep the layering deterministic.

NB

Netbay Developer Relations

Netbay Engineering

On this page

Out of the box, an EL9 server ships a few thousand packages chosen for stability rather than convenience. The moment you want fail2ban, certbot, restic, or vnstat, you need EPEL — Extra Packages for Enterprise Linux — a repository maintained by the Fedora Project and built against the same EL base as your server. It is the de facto first add-on on nearly every Rocky, AlmaLinux, and CentOS Stream machine. Enabling it is one command; enabling it well takes two more, and those two prevent essentially every EPEL-related surprise.

Repository layering on an EL9 server BaseOS — core userland (priority 10) AppStream — apps, runtimes (priority 10) CRB — build deps (disabled by default) EPEL — Fedora Project extras (priority 99) your server — dnf merges; lower number wins

What EPEL Actually Adds

EPEL fills gaps: software Red Hat does not ship in the enterprise repositories, packaged and patched by the Fedora community against the identical EL base.

  • Security and ops tooling: fail2ban, certbot, clamav, vnstat
  • Backup and restore: restic, borgbackup
  • Thousands of small utilities and libraries that make headless work livable
  • A strict rule: EPEL never ships packages that conflict with or replace the base distribution — no alternate kernels, no different glibc

Versioning is per EL generation: EPEL 9 tracks EL9 and retires with it, just as EPEL 8 tracked EL8. That last bullet — never conflicting with the base — is what makes EPEL safe by design. The risk never comes from EPEL itself; it comes from what coexists with it.

Enable It in One Command

On Rocky, AlmaLinux, and CentOS Stream, the release package sits in the distro's own repositories:

bash
sudo dnf install -y epel-release
dnf repolist
sudo dnf install -y fail2ban

That is the whole procedure on the mainstream rebuilds. On RHEL proper you instead download the repo file from the EPEL project page, since Red Hat's own repos do not carry it. Guides that also enable CRB (CodeReady Builder) are talking about building packages from source, which needs build-time dependencies EPEL does not duplicate — installing and running EPEL packages does not require it.

Enable It Safely: Two Guards

EPEL's no-conflict guarantee covers EPEL against the base repos, not the ecosystem against you. Third-party repositories added later can shadow base packages, and version ties get resolved by whoever wins dnf's tie-break. Make the layering explicit instead of hoping.

First, give the base repositories priority so EPEL can never outrank them:

bash
sudo dnf config-manager --save --setopt=baseos.priority=10
sudo dnf config-manager --save --setopt=appstream.priority=10
sudo dnf makecache

In dnf, lower priority numbers win, and the default is 99 — so BaseOS and AppStream now outrank everything that has no priority set, including EPEL. Second, if there are packages you never want EPEL to provide or update, exclude them by name:

bash
sudo dnf config-manager --save --setopt=epel.excludepkgs=nginx,redis

This is cheap insurance. One config line per repo turns an invisible version fight into a deterministic outcome you can document.

Audit What Came From Where

When version oddities appear, ask each package where it was born. EPEL packages carry the Fedora Project vendor string:

bash
rpm -qa --qf '%{NAME} %{VENDOR}
' | grep -i fedora | head

If a package you expected from the base repos shows up in that list, you have your answer — and, with priorities set, usually a one-line dnf distro-sync fix.

When EPEL Is the Wrong Tool

Some things belong outside EPEL by policy, even when EPEL carries them. Upstream software with its own repositories — PostgreSQL, Docker, Grafana — ships newer versions than EPEL does, and subscribing to both for the same stack is how version confusion starts: pick one source per stack and document it. Kernel modules and drivers that must match your running kernel come from EL repos or the vendor, never from a community rebuild. And if you find yourself wanting a different libc or toolchain for one application, the answer is a container, not a riskier repository.

Takeaway: EPEL is near-mandatory on any practical EL server, and safe by construction when layered deliberately — base repos with priority, EPEL beneath them, exclusions where you want certainty. Try it somewhere disposable: Netbay deploys pay-as-you-go Rocky and AlmaLinux VPS in under 60 seconds, so you can break dnf there instead of on production — netbayhosts.in.

Keep reading

Follow along on a real VPS

Deploy Linux in under 60 seconds

These guides are written against Ubuntu, Debian, and RHEL-family images — the same ones on NetBay.

Deploy an instance