Sunucu Yönetimi & Linux

    DNF ile Paket Yönetimi (AlmaLinux ve Rocky Linux)

    AlmaLinux ve Rocky Linux üzerinde dnf komutuyla paket, depo ve grup yönetiminin pratik rehberi.

    13 dk okuma Güncellendi: 10 Temmuz 2026

    CentOS 8'in beklenmedik şekilde sonlanmasının ardından pek çok sunucu yöneticisi AlmaLinux ve Rocky Linux'a geçti. Bu iki dağıtım, Red Hat Enterprise Linux (RHEL) ile birebir uyumlu, kararlı ve ücretsiz alternatifler oldukları için Türkiye'deki barındırma ve sistem yöneticiliği ekosisteminde hızla standart haline geldi. Bu sistemlerde yazılım kurmak, güncellemek ve kaldırmak için kullandığınız temel araç ise dnf (Dandified YUM). Sunucunuzu ilk kurduğunuz andan itibaren, bir web sunucusu yüklemekten güvenlik yamalarını uygulamaya kadar neredeyse her işiniz bu komuttan geçer.

    Bu rehberde dnf'in günlük hayatta gerçekten işinize yarayacak yönlerini, kıdemli bir sistem yöneticisinin bir müşteriye anlatacağı sadelikte ele alacağız. Paket kurma ve güncellemenin ötesine geçip grup kurulumları, ek depoların (özellikle EPEL) eklenmesi, paket arama ve inceleme, yum'dan dnf'e geçişin pratik yansımaları ve belki de en kritiği olan dnf history ile bir işlemi geri alma konularını gerçek komut örnekleriyle işleyeceğiz. Komutları AlmaLinux 9 ve Rocky Linux 9 bağlamında verdik; büyük çoğunluğu 8 sürümünde de aynı şekilde çalışır.

    DNF Nedir ve Yum'dan Farkı Nedir?#

    dnf, RHEL tabanlı dağıtımlarda paketleri yöneten paket yöneticisidir. Eski yum aracının yeniden yazılmış, daha hızlı ve daha tutarlı halidir. RHEL 8, AlmaLinux 8, Rocky Linux 8 ve sonrasında varsayılan araç dnf oldu; ancak geriye dönük uyumluluk için yum komutu hâlâ çalışır ve aslında dnf'e yönlendiren bir semboliktir. Yani bir belgede yum install nginx görürseniz endişe etmeyin, sunucunuzda bu komut sizi dnf'e taşır.

    En büyük pratik farklar bağımlılık çözümlemesinin daha güvenilir olması, dnf history ile işlemlerin geri alınabilmesi ve modüler paket akışlarının (module streams) desteklenmesidir. Eski yum'da bazen bağımlılık çakışmaları "resolving dependencies" ekranında takılı kalabiliyordu; dnf bu tür durumları çok daha temiz raporlar. Aşağıdaki tablo iki araç arasındaki temel farkları özetliyor.

    Özellikyum (eski)dnf (yeni)
    Bağımlılık çözücüPython tabanlı, yavaşlibsolv, hızlı ve tutarlı
    İşlem geri almaSınırlıdnf history undo ile güçlü
    Modül desteğiYokdnf module ile var
    Komut söz dizimiBenzerBüyük ölçüde aynı
    Varsayılan durumuRHEL 7 ve öncesiRHEL 8, AlmaLinux, Rocky

    Kısacası: yeni bir AlmaLinux veya Rocky sunucusunda yum yazmaya devam edebilirsiniz ama alışkanlığınızı dnf'e çevirmeniz en doğrusudur. Bu rehberdeki tüm örnekler dnf ile verilmiştir. Temel kabuk komutlarına hâkim değilseniz, önce Linux temel komutları rehberimize göz atmanızı öneririz; cd, ls, sudo gibi komutlara aşinalık burada işinizi çok kolaylaştıracaktır.

    Paket Kurma, Güncelleme ve Kaldırma#

    Günlük işlerin büyük bölümü üç fiil etrafında döner: kur, güncelle, kaldır. Kurulum için install, güncelleme için update (ya da eş anlamlısı upgrade), kaldırma için remove kullanılır. Neredeyse tüm işlemlerin sistem genelinde değişiklik yaptığını unutmayın; bu yüzden komutları sudo ile veya root kullanıcısıyla çalıştırırsınız.

    Tek bir paket kurmak, aynı anda birden çok paket kurmak ve bir paketi kaldırmak şöyle görünür:

    # Tek paket kurulumu
    sudo dnf install nginx
    
    # Birden fazla paketi aynı anda kurma
    sudo dnf install git wget curl vim
    
    # Bir paketi kaldırma (bağımlı olan gereksiz paketleri de temizler)
    sudo dnf remove httpd
    

    Onay istemini atlamak için -y bayrağını ekleyebilirsiniz; bu özellikle betiklerde (script) işe yarar. İnteraktif çalışırken ise onayı görmek genelde daha güvenlidir çünkü dnf size hangi bağımlılıkların da kurulacağını gösterir.

    Sistemin tamamını güncel tutmak sunucu güvenliğinin temel taşıdır. Güncelleme komutları şunlardır:

    # Depo listelerini yenile ve yüklü tüm paketleri güncelle
    sudo dnf upgrade --refresh
    
    # Sadece güncelleme olup olmadığını kontrol et (kurmadan)
    dnf check-update
    
    # Sadece güvenlik güncellemelerini uygula
    sudo dnf upgrade --security
    

    dnf upgrade ile dnf update arasında pratikte fark yoktur; upgrade, terk edilmiş paketleri (obsoletes) daha temiz yönettiği için çoğu yönetici bunu tercih eder. Kritik üretim sunucularında güncellemeleri planlı bakım pencerelerinde yapmak ve öncesinde yedek almak iyi bir alışkanlıktır. Otomatik yedekleme akışınızı kurmadıysanız yedekleme çözümlerimize göz atabilirsiniz; bir güncelleme beklenmedik şekilde bir servisi bozarsa geri dönebileceğiniz bir noktanız olması paha biçilmezdir.

    Belirli bir sürümü kurmak veya bir paketi geçici olarak güncelleme dışında tutmak da mümkündür:

    # Belirli sürümü kurma
    sudo dnf install nginx-1.24.0
    
    # Bir paketi güncellemelerden hariç tutma (o an için)
    sudo dnf upgrade --exclude=kernel*
    

    Çekirdeği (kernel) hariç tutmak, sürücü uyumluluğu hassas olan sanallaştırma ortamlarında sık başvurulan bir yöntemdir.

    dnf search ve dnf info ile Paket Keşfi#

    Bir yazılımın deposal paket adı, aklınızdaki isimle her zaman aynı olmayabilir. Örneğin "MariaDB istemcisi" ararken paketin mariadb mı yoksa mariadb-server mi olduğunu bilmeniz gerekir. İşte bu noktada search ve info devreye girer.

    # Anahtar kelimeye göre paket arama
    dnf search php
    
    # Bir dosyayı hangi paketin sağladığını bulma
    dnf provides /usr/sbin/nginx
    
    # Bir paket hakkında ayrıntılı bilgi (sürüm, boyut, açıklama)
    dnf info nginx
    

    dnf provides özellikle güçlü bir komuttur. Bir betik "komut bulunamadı" hatası verdiğinde, o dosyanın hangi paketten geldiğini bulup kurmanızı sağlar. Örneğin dnf provides '*/htpasswd' komutu size htpasswd aracının httpd-tools paketinde olduğunu söyler.

    Yüklü paketleri listelemek ve bir paketin kurulu olup olmadığını kontrol etmek için list kullanılır:

    # Yüklü tüm paketleri listeleme
    dnf list installed
    
    # Belirli bir paketin durumunu görme
    dnf list installed | grep httpd
    
    # Kurulabilir (henüz yüklü olmayan) paketleri görme
    dnf list available
    

    Bu komutlar sunucunuzda tam olarak nelerin kurulu olduğunu anlamanızı sağlar. Bir sunucuyu devraldığınızda veya güvenlik denetimi yaptığınızda ilk yapacağınız işlerden biri yüklü paket envanterini çıkarmaktır; gereksiz servisler saldırı yüzeyini büyütür. Bu konuda sunucu güvenliği temelleri rehberimiz iyi bir başlangıç noktasıdır.

    Grup Kurulumu ile Toplu Paket Yönetimi#

    Bazen tek tek paket kurmak yerine, bir amaca hizmet eden bir dizi paketi bir arada kurmak istersiniz. Örneğin bir masaüstü ortamı, geliştirme araçları takımı ya da "Basic Web Server" gibi hazır bir küme. dnf, bu tür paket demetlerini "grup" (group) olarak yönetir.

    Önce mevcut grupları listeleyip içeriklerini görebilirsiniz:

    # Kullanılabilir grupları listele
    dnf group list
    
    # Bir grubun içindeki paketleri gör
    dnf group info "Development Tools"
    

    Grup kurmak için group install (ya da eski alışkanlıkla groupinstall) kullanılır:

    # Derleyiciler ve build araçlarını topluca kur
    sudo dnf group install "Development Tools"
    
    # Alternatif eski söz dizimi de çalışır
    sudo dnf groupinstall "Development Tools"
    

    "Development Tools" grubu gcc, make, automake, git gibi kaynaktan derleme yaparken ihtiyaç duyacağınız araçları tek komutta getirir. Bir uygulamayı kaynak koddan derleyecekseniz bu grubu kurmak, eksik bağımlılık avında saatlerinizi kurtarır.

    Grubu kaldırmak için ise group remove kullanılır. Ancak dikkatli olun: grup kaldırma, gruptaki paketlerin başka bir şey tarafından kullanılıp kullanılmadığını değerlendirir ve bazen beklediğinizden fazla ya da az paket kaldırabilir. Üretim sunucusunda grup kaldırmadan önce mutlaka remove'un size göstereceği listeyi okuyun:

    # Grubu kaldırma (önce listeyi kontrol edin)
    sudo dnf group remove "Development Tools"
    

    Grup kurulumu, sunucunuzu belirli bir role hazırlarken standart ve tekrarlanabilir bir kurulum sağladığı için özellikle birden fazla sunucu yöneten ekiplerde değerlidir.

    EPEL ve Ek Depoları Ekleme#

    AlmaLinux ve Rocky Linux'un varsayılan depolarında bulunmayan pek çok popüler yazılım vardır. Örneğin htop, nload, fail2ban, certbot gibi araçlar temel depolarda gelmez. Bu araçlar için topluluk tarafından yönetilen ve RHEL ekosisteminin fiilî standardı olan EPEL (Extra Packages for Enterprise Linux) deposunu eklemeniz gerekir.

    EPEL'i eklemek tek komutluk bir iştir:

    # EPEL deposunu kur (AlmaLinux 9 / Rocky Linux 9)
    sudo dnf install epel-release
    
    # Depo önbelleğini tazele
    sudo dnf makecache
    
    # Artık EPEL paketleri kurulabilir
    sudo dnf install htop fail2ban
    

    Sunucunuzda hangi depoların etkin olduğunu görmek için repolist kullanın:

    # Etkin depoları listele
    dnf repolist
    
    # Devre dışı olanlar dâhil tüm depoları gör
    dnf repolist --all
    

    Bazı yazılımlar kendi depolarını sunar. Örneğin resmi Docker, MariaDB veya PostgreSQL sürümlerini kurmak için üreticinin depo dosyasını eklersiniz. Bu genelde /etc/yum.repos.d/ altına bir .repo dosyası koymakla olur. Bir depoyu geçici olarak devre dışı bırakmak veya yalnızca belirli bir depodan kurulum yapmak da mümkündür:

    # Sadece EPEL deposundan kurulum yap
    sudo dnf --enablerepo=epel install certbot
    
    # Belirli bir depoyu bu işlem için devre dışı bırak
    sudo dnf --disablerepo=epel install nginx
    

    Bir uyarı: yalnızca güvendiğiniz depoları ekleyin. Rastgele üçüncü taraf depolar sisteminize kararsız veya kötü niyetli paketler getirebilir, ayrıca varsayılan depolarla sürüm çakışmaları yaratabilir. Kritik üretim ortamlarında mümkün olduğunca resmi depolar ve EPEL ile yetinmek en sağlıklısıdır. Sunucu yönetimini bize bırakmak isterseniz, sunucu yönetimi hizmetimiz kapsamında depo, güncelleme ve güvenlik yamalarını sizin yerinize yönetiyoruz.

    Depo Önbelleği, Modüller ve Otomatik Güncellemeler#

    dnf her işlemde depo meta verilerini önbelleğe alır. Bazen önbellek bozulur veya güncel olmaz; bu durumda temizleyip yeniden oluşturmak sorunları çözer:

    # Tüm önbelleği temizle
    sudo dnf clean all
    
    # Meta veriyi yeniden indir
    sudo dnf makecache
    

    RHEL 8 ve sonrasında gelen bir başka özellik de modül akışlarıdır (module streams). Aynı yazılımın farklı ana sürümlerini (örneğin PHP 7.4 ve PHP 8.2) tek depodan sunmayı sağlar. Bir modülün hangi sürümlerinin mevcut olduğunu görmek ve belirli bir akışı etkinleştirmek şöyledir:

    # PHP modülünün akışlarını listele
    dnf module list php
    
    # PHP 8.2 akışını etkinleştir ve kur
    sudo dnf module enable php:8.2
    sudo dnf module install php:8.2
    

    Bu, özellikle WordPress veya başka bir PHP uygulaması çalıştıran barındırma sunucularında çok işe yarar; uygulamanızın istediği PHP sürümünü sisteme temiz biçimde alırsınız. WordPress odaklı bir kurulum planlıyorsanız WordPress hosting paketlerimiz bu sürüm yönetimini sizin için hazır sunar.

    Güvenlik güncellemelerini otomatikleştirmek için dnf-automatic paketini kurabilirsiniz. Bu, sunucunuzun güncellemeleri otomatik indirmesini ve/veya uygulamasını sağlar:

    # Otomatik güncelleme aracını kur
    sudo dnf install dnf-automatic
    
    # Zamanlayıcıyı etkinleştir
    sudo systemctl enable --now dnf-automatic.timer
    

    Yapılandırma dosyası /etc/dnf/automatic.conf içinde apply_updates = yes satırıyla otomatik uygulamayı açabilirsiniz. Üretim sunucularında genelde yalnızca güvenlik güncellemelerini otomatik, geri kalanları elle uygulamak dengeli bir yaklaşımdır.

    dnf history ile İşlemleri Geri Alma#

    dnf'in en güçlü ve belki de en az bilinen özelliği, yaptığınız her işlemin kaydını tutması ve bu işlemleri geri alabilmesidir. Yanlışlıkla kritik bir paketi kaldırdınız ya da bir güncelleme bir servisi bozdu; dnf history sizi kurtarır.

    Önce geçmişi görüntüleyin. Her işlemin bir kimlik numarası (ID) vardır:

    # Tüm dnf işlem geçmişini listele
    dnf history
    
    # Belirli bir işlemin ayrıntısını gör (ID 14)
    dnf history info 14
    

    Çıktı size kabaca şöyle bir tablo gösterir; her satır ayrı bir işlemdir:

    ID     | Komut satırı            | Tarih ve zaman   | Eylem | Değişen
    -------------------------------------------------------------------------
        15 | install nginx           | 2026-07-09 14:22 | Install |    4
        14 | upgrade                 | 2026-07-08 03:11 | Upgrade |   37
        13 | remove httpd            | 2026-07-07 19:40 | Removed |    2
    

    Bir işlemi geri almak için history undo kullanılır. Örneğin 13 numaralı işlemde yanlışlıkla httpd'yi kaldırdıysanız, tek komutla geri getirebilirsiniz:

    # 13 numaralı işlemi geri al (kaldırılan paketleri geri yükler)
    sudo dnf history undo 13
    
    # Bir işlemi tekrar uygula (yeniden yap)
    sudo dnf history redo 15
    
    # Sistemi belirli bir işlem noktasına geri sar
    sudo dnf history rollback 12
    

    undo sadece o tek işlemi tersine çevirir; rollback ise belirtilen ID'den sonraki tüm işlemleri sırayla geri alarak sistemi o ana taşır. rollback daha kapsamlı olduğu için üretim sunucusunda dikkatli kullanılmalı ve öncesinde ne yapacağını history çıktısıyla teyit etmelisiniz.

    Bu geri alma yeteneği önemli olsa da bir yedeğin yerini tutmaz. dnf history undo yalnızca paket düzeyinde değişiklikleri geri alır; yapılandırma dosyalarındaki değişiklikleri veya veritabanlarını kurtarmaz. Bu yüzden büyük güncellemelerden önce mutlaka tam bir sistem/anlık görüntü yedeği alın. VDS veya sanal sunucularda anlık görüntü (snapshot) almak en pratik yöntemdir; VDS sunucu ve sanal sunucu çözümlerimizde bu özelliği panel üzerinden birkaç tıkla kullanabilirsiniz.

    Yum'dan DNF'e Geçişte Bilmeniz Gerekenler#

    CentOS 7'den AlmaLinux/Rocky 8 veya 9'a geçen ekipler için en büyük soru işareti, uzun yıllardır kullandıkları yum alışkanlıklarının ne olacağıdır. İyi haber şu: söz diziminin neredeyse tamamı aynı kaldı. yum install, yum update, yum remove komutlarının hepsi çalışır çünkü yum artık dnf'e giden bir semboliktir. Betiklerinizi hemen değiştirmek zorunda değilsiniz.

    Yine de bilmeniz gereken birkaç ince fark var. Aşağıdaki tablo en sık karşılaşılan komut karşılıklarını gösteriyor:

    AmaçEski (yum)Yeni (dnf)
    Grup kurulumuyum groupinstalldnf group install
    Depo listesiyum repolistdnf repolist
    Önbellek temizlemeyum clean alldnf clean all
    Sürüm kilitleme eklentisiyum-plugin-versionlockpython3-dnf-plugin-versionlock
    Eski çekirdekleri temizlemeyum autoremovednf autoremove

    En dikkat edilmesi gereken nokta eklenti (plugin) adlarının değişmesidir. yum-utils yerine artık dnf-utils (ki bu da dnf-plugins-core sağlar) kurarsınız. yum-config-manager komutu hâlâ çalışır ama arka planda dnf altyapısını kullanır:

    # dnf eklenti araçlarını kur
    sudo dnf install dnf-plugins-core
    
    # Bir depoyu config-manager ile ekleme (örnek)
    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    # Bir depoyu etkinleştirme
    sudo dnf config-manager --set-enabled crb
    

    Yukarıdaki crb (CodeReady Builder) deposu, bazı geliştirme paketlerinin bağımlılıkları için gereklidir ve AlmaLinux/Rocky'de sık sık etkinleştirmeniz istenir. Geçiş sırasında karşılaşacağınız en yaygın engel budur; bir paket "bağımlılık bulunamadı" derse büyük ihtimalle crb deposunu açmanız gerekir.

    Özetle geçiş sancısız denecek kadar kolaydır. Kaslanmış yum alışkanlıklarınız bir süre daha çalışmaya devam eder, siz de yeni komutları rahatınıza göre benimsersiniz. Yeni bir sunucu kiralayıp temiz bir AlmaLinux/Rocky kurulumuyla başlamak isterseniz sunucu çözümlerimize göz atabilirsiniz.

    Sıkça Sorulan Sorular#

    dnf ile yum arasındaki fark nedir, hangisini kullanmalıyım?#

    Pratikte ikisi de aynı işi yapar çünkü AlmaLinux ve Rocky Linux'ta yum komutu artık dnf'e yönlendiren bir semboliktir. dnf daha hızlı, daha güvenilir bir bağımlılık çözücü ve history ile geri alma gibi ek yetenekler sunar. Yeni komutlarınızı dnf ile yazmanızı öneririz, ancak eski yum betikleriniz de sorunsuz çalışmaya devam eder.

    EPEL deposunu kurmak güvenli mi?#

    EPEL, Fedora topluluğu tarafından yönetilen ve RHEL ekosisteminde fiilî standart kabul edilen resmi bir ek depodur, dolayısıyla güvenle kurabilirsiniz. htop, fail2ban, certbot gibi temel depolarda bulunmayan pek çok yaygın aracı sağlar. Yine de EPEL dışındaki rastgele üçüncü taraf depoları eklemekten kaçının; onlar sürüm çakışmalarına ve güvenlik risklerine yol açabilir.

    Yanlışlıkla kaldırdığım bir paketi nasıl geri getiririm?#

    Bu tam olarak dnf history özelliğinin çözdüğü sorundur. Önce dnf history komutuyla işlem listesini görüp paketi kaldırdığınız işlemin ID numarasını bulun, ardından sudo dnf history undo <ID> komutuyla o işlemi geri alın; kaldırılan paketler geri yüklenir. Bu yöntem paket düzeyinde çalışır, yani yapılandırma dosyalarını kurtarmaz, o yüzden kritik değişikliklerden önce yedek almayı ihmal etmeyin.

    dnf update ile dnf upgrade arasında bir fark var mı?#

    İkisi arasında işlevsel olarak neredeyse hiç fark yoktur ve çoğu durumda aynı sonucu verir. upgrade, terk edilmiş (obsolete) paketleri biraz daha temiz yönettiği için birçok yönetici bunu tercih eder. Sistemin tamamını güncellemek için sudo dnf upgrade --refresh komutu güvenli ve önerilen kullanımdır.

    PHP veya başka bir yazılımın belirli bir sürümünü nasıl kurarım?#

    RHEL 8 ve sonrasında bunun için modül akışlarını (module streams) kullanırsınız. Örneğin dnf module list php ile mevcut sürümleri görüp sudo dnf module enable php:8.2 komutuyla istediğiniz sürümü etkinleştirebilir, ardından kurabilirsiniz. Bu yöntem, farklı uygulamaların farklı sürümler istediği barındırma senaryolarında sistemin temiz kalmasını sağlar.

    dnf komutları neden sudo ile çalıştırılıyor?#

    Paket kurma, güncelleme ve kaldırma işlemleri sistem genelinde dosyaları değiştirdiği için yönetici (root) yetkisi gerektirir. Bu yüzden değişiklik yapan install, remove, upgrade gibi komutları sudo ile çalıştırırsınız. Buna karşılık dnf search, dnf info ve dnf list gibi yalnızca bilgi okuyan komutlar normal kullanıcıyla da çalışır.

    Kapanış#

    DNF, AlmaLinux ve Rocky Linux üzerinde sunucunuzu yönetmenin kalbindeki araçtır. Bu rehberde paket kurma, güncelleme ve kaldırmadan grup kurulumlarına, EPEL ve ek depoların eklenmesinden dnf history ile işlemleri geri almaya kadar günlük hayatta gerçekten ihtiyaç duyacağınız komutları ele aldık. Bu temeli sağlam attığınızda, bir güncellemenin bir şeyi bozması artık panik değil, tek komutla çözülen bir durum olur.

    Sunucu yönetimini kendiniz üstlenmek istiyorsanız VDS ve sanal sunucu çözümlerimizle tam root erişimli, anlık görüntü destekli bir ortama sahip olabilirsiniz. Depo yönetimi, güvenlik yamaları ve güncellemelerle uğraşmak yerine işinize odaklanmayı tercih ediyorsanız, yönetimli sunucu hizmetimiz bu yükü sizin adınıza taşır. Hosting tarafında sürüm yönetimi hazır gelen WordPress hosting ve genel web hosting paketlerimizle de tanışmanızı öneririz. Clou.TR ekibi olarak, altyapınız hangi ölçekte olursa olsun doğru araçlarla verimli çalışmanız için buradayız.

    DNFAlmaLinuxRHEL

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.