How to Enable and Use EPEL Repository for Installing Packages like fail2ban on Amazon Linux AMI


3 views

When working with Amazon Linux AMI (based on CentOS/RHEL), you'll notice that while EPEL repositories are technically available, they aren't enabled by default. This explains why you're seeing the "No package fail2ban available" error despite having epel-release installed.

First, let's verify which repositories are currently enabled:

yum repolist all

You'll likely see EPEL listed but disabled (marked as "enabled=0").

Instead of manually downloading the RPM, Amazon Linux provides a more maintainable approach:

sudo amazon-linux-extras install epel -y

This ensures you get the version specifically tested for Amazon Linux.

After installation, enable EPEL with:

sudo yum-config-manager --enable epel

To verify it's enabled:

yum repolist enabled | grep epel

Now you can install fail2ban or any other EPEL package:

sudo yum install fail2ban

If you still encounter issues, try clearing the cache first:

sudo yum clean all
sudo yum makecache

If packages still aren't visible:

# Check repository metadata
sudo yum repoinfo epel

# Check available packages
sudo yum --disablerepo="*" --enablerepo="epel" list available

Remember that EPEL isn't officially supported by AWS. For production environments, consider:

# View package details before installation
yum info fail2ban

# Check dependencies
repoquery --requires fail2ban

On newer Amazon Linux 2 systems, EPEL integration is smoother:

sudo amazon-linux-extras enable epel
sudo yum install epel-release
sudo yum install fail2ban

Many developers encounter this scenario when working with Amazon's Linux AMI (which is CentOS-based). The system claims EPEL is installed, yet yum commands can't find packages like fail2ban. Here's what's really happening and how to fix it.

The key error message reveals the core issue:

package epel-release-6-8.9.amzn1.noarch (which is newer than epel-release-6-8.noarch) is already installed

Amazon maintains its own modified version of EPEL that doesn't automatically enable all repositories. Their version is technically "newer" but behaves differently from standard EPEL.

First, verify your current EPEL status:

sudo yum repolist all | grep epel

You'll likely see epel listed but disabled. To properly enable it:

sudo yum-config-manager --enable epel
sudo yum makecache

Now you can install packages normally:

sudo yum install fail2ban

If you still encounter issues, try these additional steps:

sudo amazon-linux-extras install epel -y
sudo yum clean all
sudo yum update

For some edge cases where the standard method fails, you can try:

# Manual package download example:
wget https://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/f/fail2ban-0.9.7-1.el6.noarch.rpm
sudo rpm -ivh fail2ban-*.rpm

Or using the newer Amazon Linux 2 approach:

sudo amazon-linux-extras install epel -y
sudo yum --enablerepo="epel" install fail2ban

After successful installation, verify with:

fail2ban-client --version
sudo service fail2ban status

And check the configuration file location:

ls -l /etc/fail2ban/

If you still face issues:

  1. Check for repository conflicts with yum repolist all
  2. Examine yum's detailed output with yum --verbose install fail2ban
  3. Consider using yum --disablerepo="*" --enablerepo="epel" list available

Remember that Amazon Linux versions may require slightly different approaches than standard CentOS.