Linux Paket Yöneticileri Karşılaştırma Rehberi: apt, pacman, yum ve rpm

Yıllarca farklı dağıtımlarla çalışmış biri olarak şunu rahatlıkla söyleyebilirim: Hangi paket yöneticisini kullandığınız, günlük iş akışınızı ciddi şekilde etkiler. Ubuntu sunucusunda apt ile büyüyen bir sysadmin, Arch tabanlı bir sisteme geçtiğinde pacman sözdizimiyle boğuşabilir. CentOS/RHEL dünyasından gelen biri ise apt‘nin bazı davranışlarını tuhaf bulabilir. Bu rehberde dört ana paket yöneticisini, apt, pacman, yum ve rpm‘yi gerçek dünya senaryolarıyla karşılaştıracağız.

Paket Yöneticisi Nedir ve Neden Önemlidir

Linux ekosisteminin en güçlü yanlarından biri, yazılım kurulumunu standartlaştıran paket yönetimi sistemidir. Bir paket yöneticisi, yazılımı kurmak, güncellemek, kaldırmak ve bağımlılıkları çözmek için kullanılan araçtır. Yönettiğiniz sistemin dağıtımına bağlı olarak farklı araçlarla karşılaşırsınız.

Kurumsal ortamda çalışıyorsanız muhtemelen RHEL, CentOS veya Rocky Linux ile yum/dnf kullanıyorsunuzdur. Geliştiricilerle dolu bir Ubuntu ortamındaysanız apt hayatınızın merkezindedir. Arch veya Manjaro ile çalışan DevOps arkadaşlarınız pacman‘dan yemeyip içmiyordur. rpm ise alt seviye paket işlemleri için hâlâ vazgeçilmezdir.

APT: Debian Ekosisteminin Kalbi

apt, Advanced Package Tool’un kısaltmasıdır ve Debian tabanlı dağıtımlarda (Ubuntu, Linux Mint, Pop!_OS vb.) kullanılır. Aslında apt, apt-get ve apt-cache gibi eski araçların üzerine kurulmuş daha kullanıcı dostu bir arayüzdür.

Temel APT Komutları

# Paket listesini güncelle (asla atlamayın)
sudo apt update

# Tüm paketleri yükselt
sudo apt upgrade

# Yeni paket kur
sudo apt install nginx

# Paket kaldır (yapılandırma dosyalarını bırakır)
sudo apt remove nginx

# Paket kaldır + yapılandırma dosyalarını da sil
sudo apt purge nginx

# Kullanılmayan bağımlılıkları temizle
sudo apt autoremove

# Paket ara
sudo apt search "web server"

# Paket hakkında bilgi al
sudo apt show nginx

Gerçek Dünya Senaryosu: Üretim Sunucusu Güncellemesi

Diyelim ki 50 tane Ubuntu 22.04 sunucunuz var ve güvenlik yamaları uygulamanız gerekiyor. Elle tek tek girmek yerine şöyle bir akış kurarsınız:

# Sadece güvenlik güncellemelerini uygula
sudo apt update && sudo apt upgrade -y

# Hangi paketlerin güncellendiğini logla
sudo apt list --upgradable 2>/dev/null | tee /var/log/upgrade-$(date +%Y%m%d).log

# Yeniden başlatma gerekip gerekmediğini kontrol et
cat /var/run/reboot-required 2>/dev/null && echo "REBOOT NEEDED" || echo "No reboot required"

Bu basit kontrol, bakım penceresi planlamanızı kolaylaştırır. Hangi sunucuların yeniden başlatmaya ihtiyaç duyduğunu önceden bilmek, özellikle gece yarısı bakımlarında büyük fark yaratır.

APT ile Depo Yönetimi

# PPA ekle (Ubuntu'ya özgü)
sudo add-apt-repository ppa:ondrej/php

# Manuel olarak sources.list'e depo ekle
echo "deb https://nginx.org/packages/ubuntu/ jammy nginx" | 
  sudo tee /etc/apt/sources.list.d/nginx.list

# GPG anahtarı ekle
curl -fsSL https://nginx.org/keys/nginx_signing.key | 
  sudo gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg

# Depo listesini görüntüle
apt-cache policy

APT’nin Güçlü Yanları ve Zayıf Noktaları

Güçlü yanlar:

  • Muazzam paket deposu (Ubuntu için 50.000+ paket)
  • LTS desteğiyle kurumsal kullanıma uygunluk
  • apt-mark hold ile paket versiyonu sabitleme imkânı
  • Kapsamlı dokümantasyon ve topluluk desteği

Zayıf noktalar:

  • apt update unutulursa eski önbellek üzerinden işlem yapılır
  • Bazen bağımlılık çakışmaları “dependency hell” oluşturabilir
  • PPA’lar güvenlik riski taşıyabilir

Pacman: Arch Linux’un Minimalist Yaklaşımı

pacman, Arch Linux ve türevlerinde (Manjaro, EndeavourOS, Garuda Linux) kullanılan paket yöneticisidir. İsmi “package manager”dan geliyor ama evet, o oyunla da akraba bir isim seçilmiş. Minimalist tasarımıyla hem hızlı hem de güçlüdür.

Temel Pacman Komutları

# Sistem güncellemesi (her zaman önce bunu yapın)
sudo pacman -Syu

# Paket kur
sudo pacman -S nginx

# Paket kaldır
sudo pacman -R nginx

# Paket kaldır + bağımlılıklarını da kaldır
sudo pacman -Rs nginx

# Paket ara (depolarda)
pacman -Ss "web server"

# Kurulu paket bilgisi
pacman -Qi nginx

# Depo paket bilgisi
pacman -Si nginx

# Önbelleği temizle
sudo pacman -Sc

AUR ile Genişletilmiş Paket Ekosistemi

Arch’ın gerçek gücü AUR (Arch User Repository) ile ortaya çıkıyor. Topluluk tarafından yönetilen bu depoda neredeyse her şeyi bulabilirsiniz. yay veya paru gibi AUR yardımcıları kullanmak hayat kurtarır:

# yay kurulumu (AUR helper)
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

# AUR'dan paket kur
yay -S google-chrome

# Hem resmi hem AUR'da ara
yay -Ss discord

# Tüm sistemi güncelle (AUR dahil)
yay -Syu

Gerçek Dünya Senaryosu: Geliştirici İstasyonu Kurulumu

Yeni bir geliştirici istasyonu kuruyorsunuz ve ihtiyaç duyduğunuz araçların bir kısmı AUR’da. Şöyle bir kurulum scripti yazabilirsiniz:

#!/bin/bash
# Arch geliştirici ortamı kurulum scripti

# Sistem güncellemesi
sudo pacman -Syu --noconfirm

# Temel geliştirici araçları
sudo pacman -S --noconfirm 
  git 
  vim 
  docker 
  docker-compose 
  nodejs 
  npm 
  python 
  python-pip

# AUR'dan ek araçlar (yay gerekli)
yay -S --noconfirm 
  visual-studio-code-bin 
  postman-bin 
  slack-desktop

echo "Kurulum tamamlandı!"

Pacman’ın Güçlü Yanları ve Zayıf Noktaları

Güçlü yanlar:

  • Rolling release, her zaman en güncel yazılımlar
  • AUR ile dev paket ekosistemi
  • Hızlı ve sade sözdizimi
  • pacman -Qlp paket.pkg.tar.zst ile kurulmadan paket içeriğini inceleme

Zayıf noktalar:

  • Rolling release kararlılık sorunlarına yol açabilir
  • Kurumsal ortamlar için LTS desteği yok
  • Kısmi güncellemeler sistemi bozabilir (her zaman -Syu yapın)
  • Yeni kullanıcılar için öğrenme eğrisi

YUM/DNF: Red Hat Dünyasının Yöneticisi

yum (Yellowdog Updater Modified) ve onun halefi dnf (Dandified YUM), Red Hat tabanlı dağıtımlarda kullanılır: RHEL, CentOS, Rocky Linux, AlmaLinux, Fedora. Modern sistemlerde yum komutu aslında dnf‘ye yönlendirilmiştir, ama eski alışkanlıklar ölmez.

Kurumsal Linux dünyasının büyük bölümü RHEL tabanlı dağıtımlarda yürüyor. Bir bankada, telekom şirketinde veya kamu kurumunda çalışıyorsanız yum/dnf muhtemelen günlük rutininizin parçası.

Temel YUM/DNF Komutları

# Paket kur
sudo dnf install nginx

# Paket kaldır
sudo dnf remove nginx

# Sistem güncellemesi
sudo dnf update

# Sadece güvenlik güncellemeleri
sudo dnf update --security

# Paket ara
dnf search nginx

# Paket bilgisi
dnf info nginx

# Paket geçmişini görüntüle
dnf history

# Belirli bir işlemi geri al
sudo dnf history undo 5

# Paket grubunu kur (örn: geliştirici araçları)
sudo dnf groupinstall "Development Tools"

Gerçek Dünya Senaryosu: RHEL Sunucusunda Nginx Kurulumu

Standart RHEL deposunda bazı paketler bulunmaz. EPEL (Extra Packages for Enterprise Linux) deposu bu açığı kapatır:

# EPEL deposunu ekle
sudo dnf install epel-release

# EPEL ile nginx kur
sudo dnf install nginx

# Servisi başlat ve etkinleştir
sudo systemctl enable --now nginx

# Güvenlik duvarı kuralı ekle
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# SELinux ile nginx port iznini ver (gerekirse)
sudo setsebool -P httpd_can_network_connect 1

Bu senaryo neden önemli? Çünkü RHEL ortamında sadece dnf install nginx yeterli değildir. SELinux ve firewalld ile bütünleşik çalışmanız gerekir. Bu, apt dünyasından geçenlerin sıklıkla atladığı bir noktadır.

DNF’nin Tarihçe Özelliği

dnf history, kurumsal ortamda altın değerinde bir özelliktir:

# Son 10 dnf işlemini listele
dnf history list | head -10

# Belirli bir işlemin detayını gör
dnf history info 12

# "Hata yaptım, geri al" durumu
sudo dnf history undo last

# Belirli bir tarihe kadar geri git
sudo dnf history rollback 8

Bu özelliği apt‘de tam karşılığıyla bulamazsınız. Özellikle bir güncelleme sonrası uygulama çöktüğünde, production ortamında işlemleri geri alabilmek paha biçilemez.

YUM/DNF’nin Güçlü Yanları ve Zayıf Noktaları

Güçlü yanlar:

  • dnf history ile geri alma kapasitesi
  • Güvenlik odaklı --security güncellemeleri
  • SELinux entegrasyonu
  • Modüler paket akışları (farklı uygulama versiyonları)
  • Kurumsal destek ve uzun vadeli bakım

Zayıf noktalar:

  • Bazı durumlarda apt‘ye kıyasla daha yavaş
  • EPEL olmadan paket çeşitliliği kısıtlı
  • Modüler sistem başlangıçta kafa karıştırıcı olabilir

RPM: Alt Seviye Paket Yönetimi

rpm (Red Hat Package Manager), tüm Red Hat tabanlı dağıtımların temelinde yatan düşük seviyeli araçtır. yum ve dnf aslında rpm‘nin üzerine bağımlılık çözümü ekleyen araçlardır. rpm‘yi doğrudan kullanmak, bağımlılıkları kendiniz yönetmek anlamına gelir.

Peki ne zaman rpm kullanırsınız? İnternete erişimi olmayan kapalı ağlarda (air-gapped systems) paket kurarken, vendor’dan gelen özel .rpm dosyalarını yüklerken veya paket içeriğini incelemek istediğinizde.

Temel RPM Komutları

# .rpm dosyası kur
sudo rpm -ivh paket.rpm

# Zaten kuruluysa yükselt
sudo rpm -Uvh paket.rpm

# Paket kaldır
sudo rpm -e paket-adi

# Tüm kurulu paketleri listele
rpm -qa

# Belirli bir paket kurulu mu?
rpm -q nginx

# Paketin hangi dosyaları kurduğunu gör
rpm -ql nginx

# Bir dosyanın hangi pakete ait olduğunu bul
rpm -qf /usr/sbin/nginx

# Paket bilgisi
rpm -qi nginx

# Henüz kurulmamış .rpm dosyasının içeriğini incele
rpm -qlp paket.rpm

# Paket doğruluğunu kontrol et (imza)
rpm -K paket.rpm

Gerçek Dünya Senaryosu: Kapalı Ağda Paket Kurulumu

Air-gapped sistemler, sysadmin dünyasının en zorlu senaryolarından birini sunar. İnternete erişim yok, özel yazılımı kurmanız lazım:

# İnternete erişimi olan makinede paketi indir
dnf download nginx

# Bağımlılıklarla birlikte indir
dnf download --resolve nginx

# İndirilen paketleri listeye aktar
ls *.rpm > paket-listesi.txt

# USB veya güvenli transfer ile hedef sisteme kopyala
# Hedef sistemde kurulum:
sudo rpm -ivh *.rpm

# Eğer bağımlılık sırası sorun çıkarıyorsa
sudo rpm -ivh --nodeps paket.rpm  # Dikkatli kullanın!

Uyarı: --nodeps seçeneğini sadece gerçekten ne yaptığınızı bildiğinizde kullanın. Bağımlılıkları görmezden gelmek sistem kararsızlığına yol açabilir.

RPM ile Paket Doğrulama

Güvenlik açısından kritik bir özellik: mevcut kurulumun bozulup bozulmadığını kontrol etmek.

# Bir paketin dosyalarının değişip değişmediğini kontrol et
rpm -V nginx

# Tüm kurulu paketleri doğrula
rpm -Va 2>/dev/null | grep -v "^..5"

# Çıktı anlamı:
# S: Dosya boyutu değişmiş
# M: İzinler değişmiş
# 5: MD5 checksum değişmiş
# T: Değiştirilme zamanı farklı

Bu özelliği güvenlik denetimlerinde sıkça kullanıyorum. Bir sunucunun ele geçirilip geçirilmediğini anlamak için sistem dosyalarının bütünlüğünü kontrol etmek ilk adımlardan biridir.

Dört Araç Arasında Kavramsal Karşılaştırma

Bağımlılık Çözümü

  • apt: Otomatik çözüm, dist-upgrade ile akıllı yükseltme
  • pacman: Otomatik çözüm, senkron depo sayesinde genellikle sorunsuz
  • dnf/yum: Otomatik çözüm + modüler akış desteği, geri alma özelliği
  • rpm: Manuel bağımlılık yönetimi, tam kontrol ama sorumluluk sizdedir

Kurumsal Kullanım Uygunluğu

  • apt: Ubuntu LTS ile kurumsal kullanım mümkün, 5 yıl standart destek
  • pacman: Rolling release nedeniyle üretim ortamı için riskli
  • dnf/yum: RHEL ekosistemi, 10 yıl destek, kurumsal ortamın gözdesi
  • rpm: Alt seviye, doğrudan üretimde kullanılmaz

Güncellik vs. Kararlılık

pacman ve Arch ekosistemi her zaman en güncel yazılımlara erişim sunar. Nginx’in yeni sürümü çıktı mı? Arch deposuna birkaç gün içinde girer. Ama RHEL 9’da o sürüm 2-3 yıl sonra gelebilir, ya da hiç gelmeyebilir. Bu bir zayıflık değil, bilinçli bir tercihtir. Kararlılık öncelikli kurumsal ortamlarda eski ama test edilmiş yazılım tercih edilir.

Hangi Araç, Hangi Senaryo İçin

Web hosting sağlayıcısı veya startup sunucuları: Ubuntu + apt kombinasyonu. Geniş topluluk desteği, bol dokümantasyon, kolay kullanım.

Finans, telekom, kamu sektörü: RHEL veya Rocky Linux + dnf. Uzun vadeli destek, sertifikasyonlar, kurumsal güvence.

Geliştirici iş istasyonları: Arch veya Manjaro + pacman. Her zaman güncel araçlar, AUR’un genişliği.

Vendor yazılım kurulumu / kapalı ağlar: rpm. Bağımsız paket kurulumu, doğrulama imkânı.

CI/CD pipeline içinde paket kurulumu: Her dağıtımın kendi araçları, ancak Docker ile bu sorun büyük ölçüde ortadan kalkar.

Geçiş Yaparken Dikkat Edilmesi Gerekenler

Ubuntu’dan RHEL’e geçen biri için en büyük şok SELinux olur. dnf install sonrası servis çalışmıyorsa önce SELinux loglarına bakın:

# SELinux ihlallerini görüntüle
sudo ausearch -m avc -ts recent

# Geçici olarak permissive moda al (test için)
sudo setenforce 0

# Kalıcı çözüm için politika oluştur
sudo audit2allow -a -M mypolicy
sudo semodule -i mypolicy.pp

apt‘den pacman‘a geçişte ise en sık yapılan hata pacman -S paket demeden önce pacman -Sy yapmak. Kısmi güncelleme yapar ve sistemi bozabilir. Her zaman pacman -Syu ile hem güncelleyin hem kurun.

Sonuç

Hangi paket yöneticisinin “en iyi” olduğu sorusu yanlış sorudur. Doğru soru şudur: Hangi araç, hangi iş için uygundur?

apt, geniş ekosistemi ve kullanım kolaylığıyla genel amaçlı kullanımda öne çıkar. pacman, güncellik ve AUR zenginliğiyle geliştirici iş istasyonlarının favorisidir. dnf/yum, kurumsal güvenilirlik ve geri alma özellikleriyle üretim sunucularında vazgeçilmezdir. rpm ise alt seviye kontrol gerektiren özel senaryolar için güçlü bir araçtır.

Deneyimli bir sysadmin, bu dört aracı da temel düzeyde bilmelidir. Kariyerinizde er ya da geç farklı dağıtımlarla çalışacaksınız. Bugün sadece Ubuntu ile çalışsanız bile, yarın bir müşteriniz RHEL kullanıyor olabilir. Araçları önceden tanımak, o an paniğe kapılmak yerine işe odaklanmanızı sağlar.

Her şeyin ötesinde, hangi aracı kullanırsanız kullanın şu üç alışkanlık sizi kurtarır: Kurmadan önce paket listesini güncelleyin, üretim ortamında test etmeden uygulamayın ve bağımlılıkları anlamadan --force veya --nodeps kullanmayın.

Yorum yapın