Perintah dnf: Instal, Perbarui, dan Hapus Paket serta Perbedaannya dengan yum

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDiperiksa 2026-10-28
Perintah PaketdnfLokasi/usr/bin/dnf

Perintah dnf adalah perintah manajemen paket di Linux keluarga RHEL untuk mencari, menginstal, memperbarui, dan menghapus paket. Di AlmaLinux 9, mengetik yum pun menjalankan program yang sama. Di server AlmaLinux 9, kami benar-benar menjalankan search, info, provides, dan history, lalu memeriksa dari outputnya ke mana masing-masing search, info, dan provides melihat saat mencari paket, serta catatan kerja apa yang tersimpan di history.

Perintah yang mengubah sistem, seperti instal, hapus, dan pembaruan, tidak kami jalankan. Perilakunya kami periksa dari dokumentasi resmi DNF dan catatan kerja yang sudah ada di server.

1️⃣ Hubungan perintah dnf dan yum

Mudah untuk mengira bahwa mengetik yum menjalankan yum versi lama, tetapi di AlmaLinux 9, yum dan dnf sama-sama merupakan tautan ke file eksekusi yang sama, yaitu dnf-3.

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

Perbedaan yum dan dnf hanya pada nama yang diketik; mana pun yang Anda ketik, subperintah dan opsinya sama. Output search htop yang dijalankan dengan yum dan dengan dnf juga persis sama.

Menurut dokumentasi resmi DNF [Changes in DNF CLI compared to YUM], update dan upgrade melakukan hal yang sama, dan dokumentasi tersebut menyarankan upgrade.

Pada distribusi lama yang tidak memiliki dnf, gunakan perintah yum seperti biasa. Nama subperintah dalam artikel ini, seperti install, search, dan history, juga sama di yum.

2️⃣ Pencarian paket dengan perintah dnf: search, info, provides

Jika Anda tidak tahu nama paket yang tepat untuk program yang ingin diinstal, cari dengan search ditambah satu kata. search mencari kata itu di nama dan ringkasan (Summary) paket, lalu menaruh paket yang namanya persis sama di urutan teratas.

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 hanya punya satu paket dengan nama yang persis sama, jadi hasilnya cukup satu baris di bawah [Name Exactly Matched].

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

Kata yang muncul di banyak paket seperti wget keluar dalam tiga kelompok: yang namanya persis sama, yang ada di nama dan ringkasan, dan yang hanya ada di nama.

search tidak melihat kalimat deskripsi (Description), jadi tidak cocok untuk mencari kata yang hanya ada di deskripsi. Dalam hal ini, tambahkan opsi [--all] untuk memperluas pencarian sampai ke deskripsi dan URL.

Setelah tahu nama paketnya, periksa versi, ukuran, dan repositori asalnya dengan info.

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).

htop yang belum terinstal muncul di info htop di bawah [Available Packages] dengan versi 3.3.0 dan repositori epel. htop hanya ada di repositori epel, jadi jika search dijalankan ulang tanpa epel, tidak ada hasil sama sekali.

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.

wget yang sudah terinstal muncul di bawah [Installed Packages]. Repository-nya @System, dan repositori asal saat diinstal tercatat sebagai appstream di baris [From repo].

Sebaliknya, jika Anda hanya tahu nama file dan tidak tahu paket mana yang memuatnya, berikan path file ke provides.

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

Hasil pencarian /usr/bin/tree terbagi dua kelompok: sisi paket tree yang terinstal (@System) dan sisi repositori (baseos). Filename di bawah [Matched from] adalah path yang benar-benar cocok. Jika Anda hanya menulis nama file tanpa path, dnf menambahkan /usr/bin/ dan /usr/sbin/ di depannya lalu mencari lagi, dan jika tetap tidak ada, perintah berakhir dengan error di bawah ini.

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.

Pesan error menyarankan untuk menulis path lengkap atau menambahkan wildcard [*/] di depannya. Apa yang diterima ketiga perintah sebagai input dan di mana mereka mencari dapat dibandingkan satu per satu di diagram di bawah.

🧭 Tempat yang dilihat tiga perintah pencari paket
Diagram penjelasan
🔍 Perintah
$ dnf search htopinfo htopprovides /usr/bin/tree
① InputhtopSatu katahtopNama paket/usr/bin/treePath file
➜
② Tempat pencarianNama dan ringkasan (Summary) paketMencari semua paket yang memuat kata itu di seluruh repositori.Metadata satu paketMenampilkan yang terinstal dan yang bisa diinstal secara terpisah.Daftar file yang disediakan paketMencari balik paket yang memuat file di path itu.
➜
③ OutputDaftar paket yang cocokhtop.x86_64 : Interactive process viewerVersi, ukuran, repositori, deskripsiVersion 3.3.0, Size 198 k, Repository epelPaket pemilik filetree-1.8.0-10.el9.x86_64, @System, baseos
search mencari kata di nama dan ringkasan paket, lalu menampilkan daftar mulai dari yang namanya persis sama.
info menampilkan versi, ukuran, dan repositori asal satu paket. Paket yang terinstal menampilkan @System di kolom Repository.
provides mencari balik paket dari path file. Sisi terinstal (@System) dan sisi repositori (baseos) ditampilkan terpisah.

3️⃣ Instalasi, penghapusan, dan pembaruan paket: install, remove, upgrade

Paket yang ditemukan diinstal dengan install. dnf tidak hanya menginstal paket yang ditentukan, tetapi juga paket dependensi yang dibutuhkannya sekaligus.

dnf install htop

Menurut dokumentasi resmi, dnf menampilkan daftar paket yang akan diinstal (ringkasan transaksi) lalu bertanya apakah akan dilanjutkan; dengan [-y], dnf langsung melanjutkan tanpa bertanya.

Paket dependensi yang ikut dibutuhkan saat instalasi dapat diperiksa lebih dulu dengan repoquery [--requires].

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)

Dengan [--requires] saja, yang keluar hanya nama pustaka yang dibutuhkan htop. Paket mana yang memuat pustaka itu diperiksa dengan perintah berikut.

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

Jika ditambah [--resolve], hasilnya berubah menjadi nama paket yang menyediakan pustaka itu. Di antaranya, hwloc-libs tidak ada di server uji, sehingga akan ikut terinstal saat htop diinstal.

remove menghapus paket yang ditentukan beserta paket yang bergantung padanya, dan pada pengaturan bawaan juga menghapus paket dependensi yang tidak lagi diperlukan.

dnf remove htop

Menghapus htop saja juga ikut menghapus paket dependensi yang tidak dibutuhkan paket lain, seperti hwloc-libs yang terinstal karena htop.

Paket yang dulu terinstal sebagai dependensi tetapi kini tidak dibutuhkan paket mana pun dihapus oleh autoremove. Periksa dulu daftar yang akan dihapus dengan list [--autoremove].

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

Di server uji, daftar itu berisi 6 paket, dan autoremove menghapus keenamnya sekaligus.

Untuk memeriksa apakah paket yang terinstal punya versi baru, gunakan check-update. Jika diberi nama paket, hanya paket itu yang diperiksa.

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

Perintah di atas dengan libavif dan libdav1d berakhir dengan kode keluar 100 karena keduanya punya versi baru. check-update berakhir dengan 100 jika ada pembaruan, 0 jika tidak ada, dan 1 jika terjadi error, sehingga bisa dipakai sebagai kondisi percabangan dalam skrip.

Jika list diberi nama paket, versi terinstal dan versi baru di repositori ditampilkan bersama. Dengan updateinfo list, Anda dapat memeriksa advisory mana yang mencakup pembaruan itu.

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

Untuk libavif, versi terinstal 0.11.1-5.el9 muncul di bawah [Installed Packages], dan versi repositori 1.1.1-3.el9 muncul terpisah di bawah [Available Packages].

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

Versi baru itu adalah pembaruan untuk advisory bugfix FEDORA-EPEL-2026-d611eab94a. Pembaruan keamanan muncul di tempat yang sama dengan tingkat dan Sec., seperti [Moderate/Sec.].

Pembaruan dijalankan dengan upgrade. upgrade hanya menginstal versi baru sejauh dependensinya cocok, sehingga versi yang terlihat di check-update belum tentu terinstal persis seperti itu.

dnf upgrade libavif

Jika diberi nama paket, hanya paket itu dan paket dependensi yang dibutuhkan yang dinaikkan ke versi baru.

dnf upgrade

Jika nama dihilangkan, seluruh paket terinstal menjadi sasaran. Alur menampilkan ringkasan transaksi lalu bertanya apakah akan dilanjutkan sama seperti install, dan transaksi yang dijalankan tercatat di history dengan nomor.

4️⃣ Daftar repositori perintah dnf: repolist

Tempat search dan install mencari paket adalah repositori (repository). repolist menampilkan id dan nama repositori yang sedang aktif.

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

Mudah untuk mengira bahwa repositori yang tidak ada di daftar berarti tidak ada di server, tetapi output bawaan repolist hanya menampilkan repositori yang aktif. Dengan [--all], repositori yang nonaktif juga ditampilkan bersama kolom status. Di server uji, ketiga repositori CRB AlmaLinux 9 semuanya disabled.

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

Jumlah paket, alamat mirror, waktu kedaluwarsa metadata, dan lokasi file konfigurasi satu repositori diperiksa dengan repoinfo.

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 menunjukkan 3.458 paket, dan metadata diatur untuk diperiksa ulang setiap 86.400 detik (sehari). File .repo di baris [Repo-filename] adalah file konfigurasi repositori ini. Opsi [--set-enabled] dan [--set-disabled] untuk mengaktifkan dan menonaktifkan repositori dipakai bersama perintah config-manager dari dnf-plugins-core.

5️⃣ Riwayat kerja dan pembatalan perintah dnf: history

Setelah berkali-kali menginstal dan menghapus, sulit melacak apa yang diubah dan kapan, tetapi dnf memberi nomor pada setiap transaksi (transaction) dan mencatatnya di history. Jika diberi nama paket, hanya transaksi yang mengubah paket itu yang ditampilkan.

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

Output yang dipersempit dengan tmux hanya menyisakan satu baris, yaitu transaksi 51 yang menginstal tmux. Rentang nomor ditulis dengan dua titik, seperti [50..51].

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

Angka di kolom [Altered] adalah jumlah paket yang berubah. Di ujung baris 50 muncul [EE], yang berarti transaksi selesai tetapi ada output peringatan atau error.

Baris perintah, paket yang berubah, dan kode hasil satu transaksi diperiksa dengan history info.

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

Saat transaksi 51 dibuka, [Command Line] masih memuat perintah yang dijalankan, install -y tmux, apa adanya. [Packages Altered] mencatat tmux yang terinstal dan repositori @baseos, dan [Return-Code] mencatat Success. Jika nomor dihilangkan, yang ditampilkan adalah transaksi terbaru.

Jika salah menginstal, berikan nomor transaksi ke history undo untuk menjalankan kebalikan dari transaksi itu. rollback mengembalikan keadaan paket ke saat tepat setelah transaksi yang ditentukan.

dnf history undo 51

Transaksi 51 adalah instalasi tmux, jadi undo 51 menjadi transaksi kebalikan yang menghapus tmux.

dnf history rollback 50

rollback 50 membatalkan semua transaksi yang dijalankan setelah 50 hingga yang terakhir, sehingga hasilnya bisa berbeda dengan undo 51 yang hanya menghapus tmux.

Menurut dokumentasi resmi, jika ada paket yang tidak bisa dikembalikan, undo dan rollback berakhir tanpa mengubah apa pun. Meskipun perubahan yang dilakukan langsung dengan rpm tidak ada di catatan, perintah ini tidak berhenti dengan error.

🔲 Simulator perintah dnf

Di simulator di bawah, Anda dapat mengetik sendiri perintah search, info, provides, repolist, dan history lalu melihat outputnya. Mengetik dengan yum pun memberi hasil yang sama.

Simulator perintah dnfdnf 4.14.0
[root@server work]#
Gunakan tombol ↑↓ pada keyboard untuk memanggil kembali perintah yang diketik sebelumnya.

🔢 FAQ & Konten yang Direkomendasikan

Itu adalah waktu terakhir salinan lokal metadata repositori diperiksa. Menurut dokumentasi resmi, setelah waktu metadata_expire yang ditetapkan tiap repositori lewat, metadata diunduh ulang. Perintah yang tidak selalu butuh informasi terbaru, seperti search dan provides, tetap memakai salinan lokal meskipun sudah kedaluwarsa. Dengan [--refresh], metadata diunduh ulang secara paksa, sedangkan [-C] hanya memakai cache.

Saat kami mencoba perintah yang tidak ada seperti foo, muncul error [No such command] bersama saran untuk memasang plugin dalam bentuk [dnf install dnf-command(nama)]. Ini karena sebagian subperintah ditambahkan oleh paket plugin seperti dnf-plugins-core. Jika itu salah ketik, periksa daftar perintah dengan [dnf --help].

rpm -q hanya membaca basis data paket terinstal di server (RPMDB) dan menampilkan versi paket itu; jika tidak ada, jawabannya [package htop is not installed]. dnf list --installed menampilkan basis data yang sama ditambah informasi repositori, sehingga di samping paket terinstal tertera repositori asalnya (@epel). Jika dnf list dipakai tanpa [--installed], versi baru di repositori juga ikut ditampilkan.

🧭 Konten yang Direkomendasikan tentang Perintah Paket 6 artikel · 2 referensi
🗂️ Perintah Paket
📄 Konsep YUM dan perintah dasar 📄 Perintah dnf 📄 Perintah yum-config-manager 📄 Perbedaan RPM · YUM
📄 Perintah apt · apt-get 📄 Instalasi snapd

ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 8   +   10   =