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.