dnf komutu: Paket kurma, güncelleme, kaldırma ve yum farkı

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabı2026-10-28 tarihinde kontrol edildi

dnf komutu, RHEL ailesinden Linux dağıtımlarında paket aramak, kurmak, güncellemek ve kaldırmak için kullanılan paket yönetimi komutudur. AlmaLinux 9'da yum yazsanız da aynı program çalışır. Bir AlmaLinux 9 sunucusunda search, info, provides ve history komutlarını gerçekten çalıştırdık ve paket bulan search, info ve provides komutlarının her birinin nereye baktığını ve history'de kalan işlem kayıtlarını çıktı üzerinden doğruladık.

Kurma, kaldırma ve güncelleme gibi sistemi değiştiren komutları çalıştırmadık. Bu davranışları resmi DNF belgeleri ve sunucuda kalmış işlem kayıtlarıyla doğruladık.

1️⃣ dnf komutu ile yum arasındaki ilişki

yum yazınca eski yum'un çalıştığını varsaymak kolaydır, ancak AlmaLinux 9'da yum ve dnf, aynı çalıştırılabilir dosya olan dnf-3'e giden bağlantılardır.

ls -l /usr/bin/yum /usr/bin/dnf
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/yum -> dnf-3

yum ile dnf arasındaki tek fark yazdığınız addır; hangisini yazarsanız yazın alt komutlar ve seçenekler aynıdır. search htop komutunu yum ve dnf ile ayrı ayrı çalıştırdığımızda da çıktı birebir aynıydı.

Resmi DNF belgesindeki [Changes in DNF CLI compared to YUM] bölümüne göre update ve upgrade aynı işlemi yapar ve belge upgrade kullanılmasını önerir.

dnf bulunmayan eski dağıtımlarda yum komutu olduğu gibi kullanılır. Bu yazıdaki install, search ve history gibi alt komut adları yum'da da aynıdır.

2️⃣ dnf komutuyla paket sorgulama: search, info, provides

Kurmak istediğiniz programın tam paket adını bilmiyorsanız search komutuna tek bir kelime vererek arayın. search, kelimeyi paket adlarında ve özetlerde (Summary) arar ve adı tam olarak eşleşen paketi en üste koyar.

dnf search htop
Last metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewer

htop için adı tam olarak eşleşen yalnızca bir paket olduğundan sonuç [Name Exactly Matched] altında tek satırda kaldı.

dnf search wget
Last metadata expiration check: 0:22:35 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: wget ==========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
========================= Name & Summary Matched: wget =========================
perl-HTTP-Tinyish-Wget.noarch : HTTP::Tinyish wget backend
wget2-devel.x86_64 : Libraries and header files needed for using wget2 libraries
wget2-libs.x86_64 : Runtime libraries for GNU Wget2
============================== Name Matched: wget ==============================
wget2.x86_64 : An advanced file and recursive website downloader

wget gibi birçok pakette geçen bir kelime; adı tam eşleşenler, hem adda hem özette geçenler ve yalnızca adda geçenler olmak üzere üç gruba ayrılarak listelendi.

search, açıklama (Description) metnine bakmadığından yalnızca açıklamada geçen bir kelimeyle aramaya uygun değildir. Bu durumda [--all] seçeneğini eklerseniz arama, açıklamayı ve URL'yi de kapsayacak şekilde genişler.

Paket adını öğrendiyseniz info ile sürümü, boyutu ve paketin hangi depodan geldiğini kontrol edin.

dnf info htop
Last metadata expiration check: 0:22:37 ago on Wed Oct 28 15:24:31 2026.
Available Packages
Name         : htop
Version      : 3.3.0
Release      : 1.el9
Architecture : x86_64
Size         : 198 k
Source       : htop-3.3.0-1.el9.src.rpm
Repository   : epel
Summary      : Interactive process viewer
URL          : http://hisham.hm/htop/
License      : GPLv2+
Description  : htop is an interactive text-mode process viewer for Linux, similar to
             : top(1).

Henüz kurulmamış htop, info htop çıktısında [Available Packages] altında sürüm 3.3.0 ve depo epel olarak görünür. htop yalnızca epel deposunda bulunan bir paket olduğundan epel deposunu hariç tutup search komutunu yeniden çalıştırırsanız hiçbir sonuç çıkmaz.

dnf info wget
Last metadata expiration check: 0:22:38 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
Name         : wget
Version      : 1.21.1
Release      : 11.el9_8
Architecture : x86_64
Size         : 3.1 M
Source       : wget-1.21.1-11.el9_8.src.rpm
Repository   : @System
From repo    : appstream
Summary      : A utility for retrieving files using the HTTP or FTP protocols
URL          : http://www.gnu.org/software/wget/
License      : GPLv3+
Description  : GNU Wget is a file retrieval utility which can use either the HTTP or
             : FTP protocols. Wget features include the ability to work in the
             : background while you are logged out, recursive retrieval of
             : directories, file name wildcard matching, remote file timestamp
             : storage and comparison, use of Rest with FTP servers and Range with
             : HTTP servers to retrieve files over slow or unstable connections,
             : support for Proxy servers, and configurability.

Zaten kurulu olan wget, [Installed Packages] altında göründü. Repository değeri @System idi ve kurulumda paketin alındığı depo [From repo] satırında appstream olarak yazıyordu.

Tersine, yalnızca dosya adını bilip dosyanın hangi pakette olduğunu bilmiyorsanız provides komutuna dosya yolunu verin.

dnf provides /usr/bin/tree
Last metadata expiration check: 0:22:40 ago on Wed Oct 28 15:24:31 2026.
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo        : @System
Matched from:
Filename    : /usr/bin/tree

tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo        : baseos
Matched from:
Filename    : /usr/bin/tree

/usr/bin/tree ile yapılan aramanın sonucu, tree paketinin kurulu tarafı (@System) ve depo tarafı (baseos) olmak üzere iki gruptu. [Matched from] altındaki Filename, gerçekten eşleşen yoldur. Yol olmadan yalnızca dosya adı yazarsanız dnf başına /usr/bin/ ve /usr/sbin/ ekleyerek yeniden arar; yine bulamazsa aşağıdaki hatayla biter.

dnf provides nosuchfile
Last metadata expiration check: 0:22:41 ago on Wed Oct 28 15:24:31 2026.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.

Hata mesajı, tam yolu yazmanızı ya da başa [*/] joker karakterini eklemenizi önerir. Üç komutun girdi olarak ne aldığını ve nerede aradığını aşağıdaki diyagramda adım adım karşılaştırabilirsiniz.

🧭 Paket bulan üç komutun baktığı yer
Açıklama diyagramı
🔍 Komut
$ dnf search htopinfo htopprovides /usr/bin/tree
① GirdihtopTek bir kelimehtopPaket adı/usr/bin/treeDosya yolu
➜
② Aranan yerPaket adı ve özet (Summary)Tüm depolarda kelimeyi içeren bütün paketleri bulur.Tek bir paketin meta verileriKurulu olanları ve kurulabilecek olanları ayrı gösterir.Paketin sağladığı dosya listesiO yoldaki dosyayı içeren paketi tersinden bulur.
➜
③ ÇıktıEşleşen paket listesihtop.x86_64 : Interactive process viewerSürüm, boyut, depo, açıklamaVersion 3.3.0, Size 198 k, Repository epelDosyayı içeren pakettree-1.8.0-10.el9.x86_64, @System, baseos
search, kelimeyi paket adlarında ve özetlerde arar ve adı tam eşleşenlerden başlayarak bir liste gösterir.
info, tek bir paketin sürümünü, boyutunu ve hangi depodan geldiğini gösterir. Kurulu paketlerde Repository alanında @System görünür.
provides, dosya yolundan paketi tersinden bulur. Kurulu taraf (@System) ve depo tarafı (baseos) ayrı ayrı gösterilir.

3️⃣ Paket kurma, kaldırma ve güncelleme: install, remove, upgrade

Bulduğunuz paketi install ile kurarsınız. dnf yalnızca belirttiğiniz paketi değil, o paketin ihtiyaç duyduğu bağımlı paketleri de tek seferde kurar.

dnf install htop

Resmi belgelere göre dnf, kurulacak paketlerin listesini (işlem özeti) gösterdikten sonra devam edip etmeyeceğinizi sorar; [-y] eklerseniz sormadan devam eder.

Kurulumda birlikte gereken bağımlı paketleri repoquery [--requires] ile önceden kontrol edebilirsiniz.

dnf repoquery --requires htop
Last metadata expiration check: 0:22:59 ago on Wed Oct 28 15:24:31 2026.
libc.so.6(GLIBC_2.34)(64bit)
libcap.so.2()(64bit)
libhwloc.so.15()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libncursesw.so.6()(64bit)
libnl-3.so.200()(64bit)
libnl-3.so.200(libnl_3)(64bit)
libnl-genl-3.so.200()(64bit)
libnl-genl-3.so.200(libnl_3)(64bit)
libtinfo.so.6()(64bit)
rtld(GNU_HASH)

Yalnızca [--requires] eklerseniz htop'un gerektirdiği kütüphanelerin adları çıkar. Bu kütüphanelerin hangi paketlerde bulunduğunu aşağıdaki komutla kontrol edersiniz.

dnf repoquery --requires --resolve htop
Last metadata expiration check: 0:23:01 ago on Wed Oct 28 15:24:31 2026.
glibc-0:2.34-283.el9_8.i686
glibc-0:2.34-283.el9_8.x86_64
hwloc-libs-0:2.4.1-6.el9_7.x86_64
libcap-0:2.48-10.el9_8.1.x86_64
libnl3-0:3.11.0-1.el9.x86_64
ncurses-libs-0:6.2-12.20210508.el9.x86_64

[--resolve] eklerseniz çıktı, bu kütüphaneleri sağlayan paketlerin adlarına dönüşür. Bunlardan hwloc-libs test sunucusunda yoktu; bu yüzden htop'u kurarsanız o da birlikte kurulur.

remove, belirttiğiniz paketi ve o pakete bağımlı paketleri birlikte kaldırır; varsayılan ayarda artık gerekmeyen bağımlı paketleri de kaldırır.

dnf remove htop

Yalnızca htop'u kaldırsanız bile htop için kurulmuş hwloc-libs gibi başka hiçbir paketin ihtiyaç duymadığı bağımlı paketler de birlikte kaldırılır.

Önceden bağımlı paket olarak kurulmuş ancak artık hiçbir paketin ihtiyaç duymadığı paketleri autoremove kaldırır. Kaldırılacakların listesini önce list [--autoremove] ile kontrol edin.

dnf list --autoremove
Last metadata expiration check: 0:23:09 ago on Wed Oct 28 15:24:31 2026.
Autoremove Packages
cmake-rpm-macros.noarch            3.31.8-3.el9                       @appstream
grub2-tools-efi.x86_64             1:2.06-126.el9_8.alma.1            @baseos
grub2-tools-extra.x86_64           1:2.06-126.el9_8.alma.1            @baseos
libatomic.x86_64                   11.5.0-14.el9.alma.1               @baseos
libvisual.x86_64                   1:0.4.0-34.el9                     @appstream
libwayland-server.x86_64           1.21.0-1.el9                       @appstream
dnf autoremove

Test sunucusunda listede 6 paket çıktı ve autoremove bu 6 paketi tek seferde kaldırır.

Kurulu paketlerin yeni sürümünün çıkıp çıkmadığını check-update ile kontrol edersiniz. Paket adı eklerseniz yalnızca o paketi hedef alır.

dnf check-update libavif libdav1d
Last metadata expiration check: 0:52:20 ago on Wed Oct 28 15:24:31 2026.

libavif.x86_64                          1.1.1-3.el9                         epel
libdav1d.x86_64                         1.5.4-1.el9                         epel

libavif ve libdav1d paketlerini içeren yukarıdaki komut, ikisinin de yeni sürümü olduğu için 100 çıkış koduyla bitti. check-update güncelleme varsa 100, yoksa 0, hata olursa 1 ile bittiği için betiklerde koşul olarak kullanılabilir.

list komutuna paket adı eklerseniz kurulu sürüm ile depodaki yeni sürüm birlikte görünür. updateinfo list ile de bu güncellemenin hangi bildirime (advisory) karşılık geldiğini kontrol edersiniz.

dnf list libavif
Last metadata expiration check: 0:52:21 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
libavif.x86_64                        0.11.1-5.el9                         @epel
Available Packages
libavif.x86_64                        1.1.1-3.el9                          epel

libavif için kurulu 0.11.1-5.el9 [Installed Packages] altında, depodaki 1.1.1-3.el9 ise [Available Packages] altında ayrı olarak göründü.

dnf updateinfo list libavif
Last metadata expiration check: 0:52:24 ago on Wed Oct 28 15:24:31 2026.
FEDORA-EPEL-2026-d611eab94a bugfix libavif-1.1.1-3.el9.x86_64

Bu yeni sürüm, FEDORA-EPEL-2026-d611eab94a numaralı bugfix bildirimine karşılık gelen bir güncellemeydi. Güvenlik güncellemelerinde aynı yerde [Moderate/Sec.] gibi önem derecesi ve Sec. ifadesi birlikte görünür.

Güncellemeyi upgrade ile yaparsınız. upgrade yalnızca bağımlılıkların uyduğu ölçüde yeni sürüm kurduğundan check-update çıktısında görünen sürüm olduğu gibi kurulmayabilir.

dnf upgrade libavif

Paket adı eklerseniz yalnızca o paket ve gereken bağımlı paketler yeni sürüme yükseltilir.

dnf upgrade

Adı yazmazsanız kurulu paketlerin tamamı hedef olur. İşlem özetini gösterip devam edip etmeyeceğinizi sorma akışı install ile aynıdır ve çalıştırılan işlem history'de bir numarayla kaydedilir.

4️⃣ dnf komutuyla depo listesi: repolist

search ve install komutlarının paketleri aradığı yer depolardır (repository). repolist, şu anda etkin olan depoların id değerini ve adını gösterir.

dnf repolist
repo id             repo name
appstream           AlmaLinux 9 - AppStream
baseos              AlmaLinux 9 - BaseOS
epel                Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras              AlmaLinux 9 - Extras
nginx-stable        nginx stable repo
remi-modular        Remi's Modular repository for Enterprise Linux 9 - x86_64
remi-safe           Safe Remi's RPM repository for Enterprise Linux 9 - x86_64

Listede olmayan bir deponun sunucuda bulunmadığını varsaymak kolaydır, ancak repolist'in varsayılan çıktısında yalnızca etkin depolar görünür. [--all] eklerseniz devre dışı depolar da status sütunuyla birlikte gösterilir. Test sunucusunda AlmaLinux 9'un üç CRB deposunun hepsi disabled durumundaydı.

dnf repolist --all | grep -i crb
crb                           AlmaLinux 9 - CRB                         disabled
crb-debuginfo                 AlmaLinux 9 - CRB - Debug                 disabled
crb-source                    AlmaLinux 9 - CRB - Source                disabled

Bir deponun paket sayısını, yansı adresini, meta verilerin geçerlilik süresini ve yapılandırma dosyasının yerini repoinfo ile kontrol edersiniz.

dnf repoinfo baseos
Last metadata expiration check: 0:22:55 ago on Wed Oct 28 15:24:31 2026.
Repo-id            : baseos
Repo-name          : AlmaLinux 9 - BaseOS
Repo-status        : enabled
Repo-revision      : 1793090609
Repo-updated       : Tue Oct 27 17:43:29 2026
Repo-pkgs          : 3458
Repo-available-pkgs: 3458
Repo-size          : 21 G
Repo-mirrors       : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl       : http://aws.repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/ (9 more)
Repo-expire        : 86400 second(s) (last: Wed Oct 28 15:24:26 2026)
Repo-filename      : /etc/yum.repos.d/almalinux-baseos.repo
Total packages: 3458

repoinfo baseos çıktısında paket sayısı 3.458 olarak göründü ve meta verilerin her 86.400 saniyede (bir gün) bir yeniden kontrol edilmesi ayarlanmıştı. [Repo-filename] satırındaki .repo dosyası bu deponun yapılandırma dosyasıdır. Depoları etkinleştiren ve devre dışı bırakan [--set-enabled] ve [--set-disabled] seçenekleri, dnf-plugins-core paketindeki config-manager komutuyla birlikte kullanılır.

5️⃣ dnf komutuyla işlem geçmişi ve geri alma: history

Kurma ve kaldırma işlemlerini birçok kez yapınca neyi ne zaman değiştirdiğinizi takip etmek zorlaşır; dnf ise her işleme (transaction) bir numara verip history'ye kaydeder. Paket adı eklerseniz yalnızca o paketi değiştiren işlemler görünür.

dnf history list tmux
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    51 | install -y tmux          | 2026-10-15 20:40 | Install        |    1

tmux ile daraltılan çıktıda yalnızca tmux'un kurulduğu 51 numaralı işlemin satırı kaldı. Numara aralığı [50..51] gibi iki noktayla yazılır.

dnf history list 50..51
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    51 | install -y tmux          | 2026-10-15 20:40 | Install        |    1
    50 | -y -q install mlocate    | 2026-10-07 19:39 | Install        |    1 EE

[Altered] sütunundaki sayı, değişen paketlerin sayısıdır. 50 numaralı satırın sonunda [EE] göründü; bu, işlemin tamamlandığını ancak uyarı ya da hata çıktısı olduğunu gösterir.

Tek bir işlemin komut satırını, değişen paketlerini ve sonuç kodunu history info ile kontrol edersiniz.

dnf history info 51
Transaction ID : 51
Begin time     : Thu Oct 15 20:40:51 2026
Begin rpmdb    : d3db9c92a9d0f6ef9a7a1404552bb76e9d56ba7602b1fce73fa5a62170d33c5c
End time       : Thu Oct 15 20:40:51 2026 (0 seconds)
End rpmdb      : a862c33ee6a2f2d0479e4dc2631907dee47591c5b6795551b755c6cd090ac1df
User           : root <root>
Return-Code    : Success
Releasever     : 9
Command Line   : install -y tmux
Persistence    : Persist
Comment        :
Packages Altered:
    Install tmux-3.2a-5.el9.x86_64 @baseos

51 numaralı işlemi açtığımızda [Command Line] satırında çalıştırılan install -y tmux komutu olduğu gibi duruyordu. [Packages Altered] altında kurulan tmux ile depo @baseos, [Return-Code] satırında ise Success yazıyordu. Numarayı yazmazsanız en son işlem görünür.

Yanlış bir şey kurduysanız history undo komutuna işlem numarasını vererek o işlemin tersini çalıştırırsınız. rollback ise paket durumunu belirtilen işlemin hemen sonrasına geri döndürür.

dnf history undo 51

51 numaralı işlem tmux kurulumu olduğu için undo 51, tmux'u kaldıran ters bir işlem olur.

dnf history rollback 50

rollback 50, 50'den sonra çalıştırılan işlemlerin sonuncusuna kadar hepsini geri aldığından, yalnızca tmux'u kaldıran undo 51 ile sonucu farklı olabilir.

Resmi belgelere göre geri alınamayan bir paket varsa undo ve rollback hiçbir şeyi değiştirmeden biter. rpm ile doğrudan yapılan değişiklikler kayıtta olmasa bile hata vererek durmazlar.

🔲 dnf komutu simülatörü

Aşağıdaki simülatörde search, info, provides, repolist ve history komutlarını kendiniz yazıp çıktıyı görebilirsiniz. yum ile yazsanız da aynı sonucu alırsınız.

dnf komutu simülatörüdnf 4.14.0
[root@server work]#
Klavyedeki ↑↓ tuşlarıyla daha önce yazdığınız komutları geri çağırabilirsiniz.

🔢 SSS & önerilen içerikler

Depo meta verilerinin yerel kopyasının en son kontrol edildiği zamandır. Resmi belgelere göre her depo için belirlenen metadata_expire süresi dolunca veriler yeniden indirilir. search ve provides gibi en güncel bilgiye mutlaka ihtiyaç duymayan komutlar, süre dolsa bile yerel kopyayı kullanır. [--refresh] eklerseniz veriler zorla yeniden indirilir, [-C] ise yalnızca önbelleği kullanır.

foo gibi var olmayan bir komut denediğimizde [No such command] hatasıyla birlikte [dnf install dnf-command(ad)] biçiminde bir eklenti kurmayı öneren bir mesaj çıktı. Bunun nedeni, bazı alt komutların dnf-plugins-core gibi eklenti paketleri tarafından eklenmesidir. Yazım hatasıysa komut listesini [dnf --help] ile kontrol edin.

rpm -q yalnızca sunucuda kurulu paketlerin veritabanını (RPMDB) okuyup o paketin sürümünü gösterir; paket yoksa [package htop is not installed] yanıtını verir. dnf list –installed ise aynı veritabanına depo bilgisini ekleyerek gösterdiği için kurulu paketin yanında alındığı depo (@epel) yer alır. dnf list komutunu [--installed] olmadan kullanırsanız depodaki yeni sürümler de birlikte gösterilir.

🧭 Paket komutları için önerilen içerikler 6 yazı · 2 kaynak
🗂️ Paket komutları
📄 YUM kavramı ve temel komutları 📄 dnf komutu 📄 yum-config-manager komutu 📄 RPM ve YUM farkı
📄 apt · apt-get komutları 📄 snapd kurulumu

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 4   +   2   =