EPEL Deposu Kurulumu ve Kullanımı: CentOS ve Rocky Linux İçin Kapsamlı Rehber

CentOS veya Rocky Linux kurduğunuzda, varsayılan depolar iş görmekle birlikte çoğu zaman ihtiyaç duyduğunuz paketleri bulamadığınızı fark edersiniz. htop kurmak istiyorsunuz, yok. nginx‘in daha güncel versiyonuna ihtiyacınız var, bulamıyorsunuz. İşte tam bu noktada EPEL devreye giriyor ve hayatınızı ciddi ölçüde kolaylaştırıyor.

EPEL Nedir ve Neden Gereklidir?

EPEL (Extra Packages for Enterprise Linux), Fedora projesi tarafından yönetilen ve Red Hat tabanlı sistemler için binlerce ek paket sunan bir depodur. Temel amacı, kurumsal Linux dağıtımlarının resmi depolarında bulunmayan ama sistem yöneticilerinin sıkça ihtiyaç duyduğu paketleri güvenilir bir kaynaktan sağlamaktır.

Şunu netleştireyim: EPEL, Red Hat’ın resmi bir ürünü değil. Fedora topluluğu tarafından yönetiliyor. Ama Fedora, Red Hat’ın sponsorluğunda çalışan bir proje olduğu için paketlerin kalitesi ve güvenilirliği son derece yüksek. Üstelik EPEL paketleri, mevcut sistem paketleriyle çakışmayacak şekilde tasarlanmıştır. Yani EPEL, temel sistem paketlerini geçersiz kılmaz, sadece eksik olanları tamamlar.

Peki EPEL’de ne tür paketler var? Birkaç örnek vermek gerekirse:

  • htop, iotop, iftop: Sistem izleme araçları
  • nginx: Web sunucusu (daha güncel versiyonlar)
  • redis: In-memory veritabanı
  • certbot: Let’s Encrypt sertifika aracı
  • python3-pip: Python paket yöneticisi eklentileri
  • fail2ban: Brute force koruma aracı
  • clamscan (ClamAV): Antivirüs çözümü
  • jq: JSON işleme aracı
  • mosh: SSH alternatifi mobil shell

Kurulum Öncesi Hazırlık

EPEL’i kurmadan önce sisteminizin güncel olduğundan emin olun. Bozuk bir sistemde depo eklemek bazen beklenmedik sorunlara yol açabiliyor. Ayrıca hangi EPEL versiyonunu kuracağınız, sisteminizdeki RHEL/CentOS/Rocky Linux sürümüne göre değişiyor.

# Sistem bilgilerini kontrol et
cat /etc/os-release

# Ya da daha kısa versiyon
cat /etc/redhat-release

# Sistemi güncelleyelim
sudo dnf update -y

Çıktıda gördüğünüz major versiyon numarası (8 veya 9 gibi) hangi EPEL paketini kuracağınızı belirliyor.

EPEL Kurulum Yöntemleri

Yöntem 1: dnf ile Doğrudan Kurulum (Önerilen)

Bu yöntem en temiz ve en hızlı yoldur. Rocky Linux 8/9 ve CentOS Stream 8/9 için geçerlidir.

# EPEL deposunu kur
sudo dnf install epel-release -y

# Kurulumun başarılı olduğunu doğrula
sudo dnf repolist | grep epel

Çıktı şuna benzer bir şey olmalı:

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

Yöntem 2: RPM Paketi ile Manuel Kurulum

Bazen özellikle air-gapped (internete kapalı) ortamlarda veya belirli bir EPEL versiyonuna ihtiyaç duyduğunuzda RPM dosyasını manuel olarak indirip kurmanız gerekebilir.

# EPEL 9 için (Rocky Linux 9 / CentOS Stream 9)
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

# EPEL 8 için (Rocky Linux 8 / CentOS Stream 8)
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

# Kurulum sonrası depo önbelleğini yenile
sudo dnf makecache

Yöntem 3: RHEL Sistemlerinde EPEL Kurulumu

Eğer lisanslı bir RHEL sistemi kullanıyorsanız, subscription-manager üzerinden gerekli repo’yu aktive etmeniz gerekebilir.

# RHEL 9 için önce CodeReady Linux Builder'ı aktif et
sudo subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms

# Sonra EPEL'i kur
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y

EPEL Deposunu Yönetmek

Depo Listesini Görüntüleme

# Tüm aktif depoları listele
sudo dnf repolist

# Hem aktif hem pasif depoları görüntüle
sudo dnf repolist all

# Belirli bir depo hakkında detaylı bilgi
sudo dnf repoinfo epel

dnf repoinfo epel komutu size deponun URL’si, öncelik sırası, paket sayısı gibi detaylı bilgileri verecek. Özellikle sorun gidermede çok işe yarıyor.

EPEL Deposunu Geçici Olarak Devre Dışı Bırakma

Bazen bir güncelleme veya kurulum işlemi için EPEL’i geçici olarak bypass etmek isteyebilirsiniz. Bu durumda --disablerepo parametresini kullanın:

# Sadece bu komut için EPEL'i devre dışı bırak
sudo dnf install httpd --disablerepo=epel

# Ya da tam tersi, sadece EPEL'den kur
sudo dnf install htop --enablerepo=epel --disablerepo="*"

EPEL Deposunu Kalıcı Olarak Etkinleştirme/Devre Dışı Bırakma

# EPEL'i kalıcı olarak devre dışı bırak
sudo dnf config-manager --set-disabled epel

# Tekrar aktif et
sudo dnf config-manager --set-enabled epel

Bu komutlar /etc/yum.repos.d/epel.repo dosyasındaki enabled değerini değiştiriyor. Manuel olarak da düzenleyebilirsiniz:

sudo vi /etc/yum.repos.d/epel.repo

Dosyanın içinde enabled=1 satırını enabled=0 yaparak devre dışı bırakabilirsiniz.

Gerçek Dünya Senaryosu 1: Yeni Sunucu Kurulum Sonrası EPEL ile Temel Araçları Yükleme

Şirkette yeni bir Rocky Linux 9 sunucusu kuruldu ve siz sistemi yönetilebilir hale getirmeniz gerekiyor. İşte benim her yeni sunucuda uyguladığım temel kurulum rutini:

#!/bin/bash
# Yeni sunucu post-install script'i

echo "Sistem guncelleniyor..."
sudo dnf update -y

echo "EPEL deposu kuruluyor..."
sudo dnf install epel-release -y
sudo dnf makecache

echo "Temel sistem araclari kuruluyor..."
sudo dnf install -y 
    htop 
    iotop 
    iftop 
    nmap 
    tcpdump 
    wget 
    curl 
    git 
    vim 
    tmux 
    screen 
    fail2ban 
    jq 
    net-tools 
    bind-utils 
    lsof 
    strace

echo "Servisler baslatiliyor..."
sudo systemctl enable --now fail2ban

echo "Kurulum tamamlandi!"

Bu script’i /root/post-install.sh olarak kaydedip çalıştırdığınızda, sisteminiz kullanıma hazır hale geliyor. Özellikle fail2ban gibi güvenlik araçlarının EPEL’den geldiğini ve standart depolarda bulunmadığını unutmayın.

Gerçek Dünya Senaryosu 2: Certbot ile Let’s Encrypt Sertifikası Alma

EPEL’in en çok kullanılan paketlerinden biri olan certbot, Let’s Encrypt SSL sertifikalarını otomatik olarak alıp yenilemenizi sağlıyor. Standart depolarda bulunmuyor, EPEL üzerinden geliyor.

# Certbot ve nginx eklentisini EPEL'den kur
sudo dnf install certbot python3-certbot-nginx -y

# Sertifika al (nginx için)
sudo certbot --nginx -d siteniz.com -d www.siteniz.com

# Sertifika yenilemeyi test et
sudo certbot renew --dry-run

# Otomatik yenileme için cron job kontrol
sudo cat /etc/cron.d/certbot

Bu işlemi yaparken sisteminizde nginx’in çalışıyor olması ve 80/443 portlarının açık olması gerekiyor. Certbot, domain doğrulamasını HTTP-01 challenge ile yapıyor.

Gerçek Dünya Senaryosu 3: Python Geliştirme Ortamı Kurulumu

Bir uygulama sunucusunda Python tabanlı bir uygulama deploy edeceksiniz. EPEL olmadan bu oldukça zahmetli olabiliyor:

# EPEL'in kurulu olduğundan emin ol
sudo dnf install epel-release -y

# Python araçlarını kur
sudo dnf install -y python3-pip python3-virtualenv python3-devel

# Örnek: FastAPI uygulaması için ortam hazırla
python3 -m venv /opt/myapp/venv
source /opt/myapp/venv/bin/activate
pip install fastapi uvicorn

# Sistem genelinde pip kullanmak için
pip3 install ansible  # Evet, Ansible de EPEL bağımlılıklarını kullanıyor

EPEL ile Paket Yönetimi İpuçları

Hangi Paketin Hangi Depodan Geldiğini Anlama

Birden fazla depo kullandığınızda, hangi paketin nereden geldiğini takip etmek önemlidir:

# Kurulu bir paketin hangi depodan geldiğini öğren
dnf info htop

# Daha detaylı bilgi için
rpm -qi htop

# Belirli bir deponun paketlerini listele
dnf repository-packages epel list installed

EPEL’deki Mevcut Paketleri Arama

# EPEL'de paket ara
dnf search --enablerepo=epel redis

# Paketin detaylarını gör (kurulu olmasa bile)
dnf info --enablerepo=epel redis

# EPEL'den kurabileceğiniz tüm paketleri listeleme (uzun liste!)
dnf list available --disablerepo="*" --enablerepo=epel | head -50

Paket Çakışmalarını Yönetme

EPEL kullanırken zaman zaman paket versiyonu çakışmalarıyla karşılaşabilirsiniz. Bu durumda ne yapacağınızı bilin:

# Çakışan paketleri kontrol et
dnf check

# Belirli bir paketin tüm versiyon geçmişini gör
dnf --showduplicates list nginx

# Belirli bir versiyonu yükle
sudo dnf install nginx-1.20.1 -y

# Ya da en yeni versiyona zorla geç
sudo dnf install --best nginx -y

EPEL Next Deposu Nedir?

Rocky Linux 9 ve benzeri sistemlerde EPEL’in yanında bir de EPEL Next deposu geliyor. Bu depo, bir sonraki RHEL minor versiyonunda gelmesi beklenen paketleri içeriyor. Yani biraz daha deneysel sayılabilir.

# epel-next deposunu aktifleştir
sudo dnf config-manager --set-enabled epel-next

# epel-next'ten paket kur
sudo dnf install --enablerepo=epel-next paket-adi

# epel-next deposunu listele
dnf repolist | grep epel

Üretim ortamlarında EPEL Next’i kullanırken dikkatli olun. Özellikle kritik sistemlerde sadece standart EPEL’i kullanmanızı öneririm.

Güvenlik Konuları ve En İyi Uygulamalar

GPG Anahtarı Doğrulama

EPEL paketleri GPG ile imzalanmış durumdadır. Bunu asla devre dışı bırakmayın:

# EPEL GPG anahtarını kontrol et
rpm -qa gpg-pubkey* --qf '%{name}-%{version}-%{release} --> %{summary}n' | grep -i fedora

# Ya da
gpg --show-keys /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9

Depo Önceliklerini Ayarlama

Birden fazla depo kullandığınızda, aynı paketin farklı versiyonlarını sunan depolar arasında öncelik belirlemeniz gerekebilir. EPEL, kendi paketleri için base repolarla çakışmayacak şekilde tasarlanmış olsa da bazen sorun çıkabiliyor.

# dnf-plugins-core'u kur (genellikle zaten kurulu)
sudo dnf install dnf-plugins-core -y

# Depo önceliklerini görüntüle
dnf repolist -v | grep -A5 epel

/etc/yum.repos.d/epel.repo dosyasına priority=80 gibi bir satır ekleyebilirsiniz. Standart repo’lar genellikle daha düşük sayı (daha yüksek öncelik) kullanır, EPEL için daha yüksek bir numara verin.

Hangi Paketlerin EPEL’den Güncellendiğini Takip Etme

# Son yapılan güncellemeleri gör
dnf history

# Belirli bir tarihten sonraki değişiklikleri gör
dnf history --since=2024-01-01

# EPEL kaynaklı güncellemeleri filtrele
dnf history list | head -20

Sık Karşılaşılan Sorunlar ve Çözümleri

Sorun 1: “Cannot find a valid baseurl for repo” Hatası

Bu hata genellikle internet bağlantısı veya DNS sorunundan kaynaklanıyor.

# DNS'i test et
nslookup dl.fedoraproject.org

# Doğrudan IP ile erişmeyi dene
curl -I https://dl.fedoraproject.org/pub/epel/

# Önbelleği temizle ve yeniden dene
sudo dnf clean all
sudo dnf makecache

Sorun 2: GPG Anahtarı Hatası

# GPG anahtarlarını yeniden içe aktar
sudo rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9

# Ya da
sudo dnf install epel-release --nogpgcheck  # Sadece sorun giderme için!

Uyarı: --nogpgcheck seçeneğini sadece test ortamlarında ve geçici olarak kullanın. Üretim ortamında GPG doğrulamasını devre dışı bırakmayın.

Sorun 3: “Package is excluded” Hatası

Bazı sistemlerde /etc/dnf/dnf.conf dosyasında paket exclusion kuralları olabilir:

# dnf.conf'u kontrol et
cat /etc/dnf/dnf.conf | grep exclude

# EPEL repo dosyasındaki exclusion'ları kontrol et
cat /etc/yum.repos.d/epel.repo | grep exclude

Sorun 4: Çift Paket Versiyonu

# Çift paketleri temizle
sudo package-cleanup --dupes
sudo dnf remove --duplicates

EPEL ile Ansible Playbook Örneği

Otomasyonla çalışıyorsanız EPEL kurulumunu Ansible ile yönetmek çok daha temiz oluyor:

---
- name: EPEL Deposu Kurulum ve Konfigurasyon
  hosts: all
  become: yes
  
  tasks:
    - name: EPEL release paketini kur
      dnf:
        name: epel-release
        state: present
      when: ansible_os_family == "RedHat"

    - name: DNF onbellegini yenile
      dnf:
        update_cache: yes

    - name: Temel paketleri EPEL ile kur
      dnf:
        name:
          - htop
          - fail2ban
          - certbot
          - jq
          - iotop
        state: present

    - name: Fail2ban servisini baslat
      systemd:
        name: fail2ban
        state: started
        enabled: yes

Bu playbook’u birden fazla sunucuya aynı anda uyguladığınızda tutarlı bir ortam elde etmiş olursunuz. CI/CD pipeline’larınıza da entegre edebilirsiniz.

EPEL Katkısı ve Topluluk

EPEL tamamen gönüllü katkıcılar tarafından yönetildiği için, bir paketin EPEL’e eklenmesini veya güncellenmesini beklerken bazen gecikmeler yaşanabiliyor. Eğer ihtiyaç duyduğunuz paket EPEL’de yoksa ya da çok eski bir versiyonu varsa şu alternatiflere bakabilirsiniz:

  • Remi Deposu: Özellikle PHP ve ilgili paketler için
  • IUS Deposu: Upstream kararlı versiyonlar için
  • SCL (Software Collections): Birden fazla versiyon paralel kullanım için
  • Flatpak/Snap: Desktop uygulamaları için

Ama şunu da belirteyim: Ekstra depo ne kadar çok olursa, bağımlılık yönetimi o kadar karmaşık hale gelir. Elimden geldiğince az sayıda depoyla çalışmayı tercih ediyorum.

Sonuç

EPEL, CentOS ve Rocky Linux ekosisteminin vazgeçilmez bir parçası. Standart depolar kurumsal stabiliteye odaklanırken, EPEL günlük sysadmin ihtiyaçlarınızı karşılayacak binlerce paketi güvenli bir şekilde sunuyor.

Kurulum son derece basit, dnf install epel-release komutuyla birkaç saniye içinde hazır hale geliyor. Ama asıl önemli olan, EPEL’i nasıl doğru kullandığınız. GPG doğrulamasını kapatmayın, depo önceliklerini anlayın, hangi paketin nereden geldiğini takip edin ve mümkün olduğunda kurulumlarınızı Ansible gibi araçlarla otomatize edin.

Yeni bir Rocky Linux veya CentOS sunucusu kurduğumda ilk yaptığım şeylerden biri EPEL kurmak. htop olmadan sunucu yönetmek, fare olmadan bilgisayar kullanmak gibi bir şey benim için. Umarım bu yazı, EPEL’i daha verimli kullanmanıza yardımcı olur.

Aklınıza takılan bir şey varsa ya da farklı bir EPEL kullanım senaryonuz varsa yorumlarda paylaşın.

Yorum yapın