Instal DNF pada RHEL/CentOS 7: Panduan Teknis Lengkap
DNF (Dandified YUM) adalah manajer paket generasi berikutnya untuk distribusi Linux berbasis RPM, yang dirancang sebagai pengganti penuh YUM. DNF menghadirkan resolusi dependensi yang lebih cepat melalui library `libsolv`, konsumsi memori yang lebih rendah, dan Python API yang stabil. Meskipun RHEL/CentOS 7 dilengkapi dengan YUM secara default, DNF dapat sepenuhnya diinstal melalui repositori EPEL dan dapat berjalan secara paralel dengan — atau sebagai pengganti transparan untuk — YUM pada sistem yang sama.
Panduan ini memandu proses instalasi lengkap, menjelaskan perbedaan arsitektur antara YUM dan DNF, mencakup kasus-kasus edge dunia nyata, dan memberikan referensi perintah yang siap digunakan di lingkungan produksi.
Mengapa DNF Mengungguli YUM di RHEL/CentOS 7
Sebelum menyentuh terminal, memahami *mengapa* peningkatan ini penting membantu Anda membuat keputusan yang tepat — terutama di lingkungan VPS Hosting yang sudah lama berjalan di mana keandalan manajemen paket sangat penting.
Perbedaan Arsitektur Inti
YUM mengandalkan resolver dependensi berbasis Python yang memiliki masalah performa yang terdokumentasi dengan baik pada pohon dependensi yang besar. DNF mengganti resolver tersebut dengan `libsolv`, sebuah mesin resolusi dependensi berbasis SAT-solver yang awalnya dikembangkan oleh SUSE. Konsekuensi praktisnya sangat signifikan:
- Kecepatan resolusi dependensi: DNF menyelesaikan rantai dependensi yang kompleks dalam sebagian kecil waktu yang dibutuhkan YUM, terutama terlihat saat menyelesaikan konflik dalam kumpulan paket yang besar.
- Jejak memori: YUM memuat seluruh metadata repositori ke dalam memori. DNF menggunakan lazy loading dan melakukan cache secara lebih agresif, sehingga mengurangi penggunaan puncak RAM.
- Stabilitas API: Python API YUM berubah secara tidak terduga antara versi minor. DNF mengekspos Python API yang terdokumentasi dan berversi yang dapat diandalkan oleh penulis plugin.
- Arsitektur plugin: DNF menggunakan sistem plugin berbasis hook yang bersih. Plugin YUM sering saling mengganggu karena coupling yang longgar.
- Riwayat transaksi: DNF mempertahankan database riwayat transaksi yang lebih kaya, membuat rollback dan audit lebih presisi.
YUM vs. DNF: Perbandingan Fitur
| Fitur | YUM | DNF |
|---|
| — | — | — |
|---|
| Resolver dependensi | Berbasis Python (internal) | `libsolv` SAT solver |
|---|
| Penggunaan memori | Lebih tinggi (pemuatan metadata penuh) | Lebih rendah (lazy loading + cache agresif) |
|---|
| Python API | Tidak stabil antar versi | API stabil dan berversi |
|---|
| Sistem plugin | Coupling longgar, rentan konflik | Berbasis hook, terisolasi |
|---|
| Rollback transaksi | Terbatas | Riwayat penuh dengan dukungan rollback |
|---|
| Unduhan paralel | Tidak | Ya (melalui `librepo`) |
|---|
| Dependensi lemah | Tidak didukung | Didukung (`Recommends`, `Suggests`) |
|---|
| Aliran modul | Tidak didukung | Didukung (DNF 4+) |
|---|
| Status pemeliharaan | End-of-life | Dipelihara secara aktif |
|---|
| Default di RHEL/CentOS | 7 dan sebelumnya | 8 dan sesudahnya |
|---|
Prasyarat
Sebelum melanjutkan, konfirmasikan hal-hal berikut:
- Instans RHEL 7 atau CentOS 7 yang sedang berjalan (bare metal, VM, atau VPS cloud).
- Akses root atau sudo — semua perintah instalasi memerlukan hak istimewa yang ditingkatkan.
- Konektivitas internet aktif — repositori EPEL harus dapat dijangkau.
- Setidaknya 500 MB ruang disk kosong untuk DNF, dependensinya, dan cache metadata repositori.
Jika Anda menjalankan instalasi minimal CentOS 7 di Dedicated Server, verifikasi bahwa `curl` dan `wget` tersedia, karena keduanya kadang tidak ada dalam image yang telah dipangkas.
Langkah 1: Perbarui Paket Sistem yang Ada
Menyinkronkan database paket Anda sebelum menginstal perangkat lunak baru mencegah konflik versi dan memastikan paket rilis EPEL terinstal dengan bersih terhadap status database RPM Anda saat ini.
“`bash
sudo yum update -y
“`
Apa yang dilakukan ini: Mengunduh dan menerapkan semua pembaruan yang tersedia untuk paket yang saat ini terinstal, menyegarkan metadata repositori, dan membangun ulang kunci transaksi RPM. Pada sistem produksi, jadwalkan ini selama jendela pemeliharaan — pembaruan kernel memerlukan reboot agar berlaku.
Kasus edge: Jika `yum update` gagal dengan error `Multilib version problems`, jalankan `sudo yum update –setopt=protected_multilib=false -y` sebagai solusi sementara, lalu selidiki paket yang berkonflik sebelum melanjutkan.
Langkah 2: Aktifkan Repositori EPEL
DNF tidak tersedia di repositori dasar CentOS/RHEL 7 default. Repositori Extra Packages for Enterprise Linux (EPEL), yang dikelola oleh proyek Fedora, menyediakannya.
“`bash
sudo yum install epel-release -y
“`
Verifikasi bahwa repositori aktif:
“`bash
yum repolist | grep epel
“`
Output yang diharapkan harus menampilkan `epel/x86_64` dengan jumlah paket yang bukan nol (biasanya 13.000+). Jika repositori tampak dinonaktifkan, aktifkan paksa:
“`bash
sudo yum-config-manager –enable epel
“`
Catatan keamanan: Paket EPEL dibangun dan ditandatangani oleh tim infrastruktur Fedora. Paket `epel-release` menginstal kunci GPG secara otomatis. Anda dapat memverifikasi sidik jari kunci terhadap server kunci Fedora resmi sebelum mempercayai paket dari repositori ini — langkah yang layak dilakukan pada sistem produksi yang diperketat.
Di belakang proxy atau firewall? Jika server Anda tidak dapat menjangkau mirror Fedora secara langsung, konfigurasikan `/etc/yum.conf` dengan pengaturan proxy Anda:
“`ini
proxy=http://your-proxy-server:port
proxy_username=user
proxy_password=pass
“`
Langkah 3: Instal DNF
Dengan EPEL aktif, instal DNF dan dependensi intinya dalam satu perintah:
“`bash
sudo yum install dnf -y
“`
Ini menarik `dnf`, `dnf-data`, `python-dnf`, `libcomps`, `librepo`, dan `libsolv` sebagai dependensi otomatis. Total ukuran unduhan biasanya antara 3–8 MB tergantung pada apa yang sudah terinstal.
Yang terinstal:
- `dnf` — binary utama dan antarmuka baris perintah
- `libsolv` — resolver dependensi berbasis SAT
- `librepo` — library unduhan paralel
- `libcomps` — parser XML comps untuk grup paket
- `python-dnf` — binding Python dan library inti DNF
Langkah 4: Verifikasi Instalasi
Konfirmasikan bahwa DNF beroperasi dan periksa versinya:
“`bash
dnf –version
“`
Instalasi yang berhasil menghasilkan output yang mirip dengan:
“`
4.0.9.2
Installed: dnf-0:4.0.9.2-1.el7.noarch at …
Built : CentOS BuildSystem <http://bugs.centos.org> at …
“`
Jalankan pemeriksaan kewarasan yang lebih mendalam dengan mencantumkan repositori yang tersedia seperti yang dilihat oleh DNF:
“`bash
dnf repolist
“`
Output harus mencerminkan apa yang ditampilkan `yum repolist`, mengonfirmasi bahwa DNF telah mewarisi konfigurasi repositori Anda yang ada dari `/etc/yum.repos.d/` dengan benar.
Penting: DNF di CentOS 7 membaca file repositori `.repo` yang sama dengan YUM. Tidak diperlukan migrasi repositori. Kedua alat berbagi `/etc/yum.repos.d/` dan `/var/cache/` (dalam subdirektori terpisah).
Langkah 5: Referensi Perintah Inti DNF
DNF sengaja dibuat kompatibel perintahnya dengan YUM. Tabel berikut mencakup operasi yang paling sering Anda gunakan:
| Tugas | Perintah DNF |
|---|
| — | — |
|---|
| Perbarui semua paket | `sudo dnf update -y` |
|---|
| Instal sebuah paket | `sudo dnf install <package> -y` |
|---|
| Hapus sebuah paket | `sudo dnf remove <package> -y` |
|---|
| Cari sebuah paket | `dnf search <keyword>` |
|---|
| Dapatkan info paket | `dnf info <package>` |
|---|
| Daftar paket yang terinstal | `dnf list installed` |
|---|
| Daftar pembaruan yang tersedia | `dnf check-update` |
|---|
| Bersihkan metadata yang di-cache | `sudo dnf clean all` |
|---|
| Lihat riwayat transaksi | `dnf history` |
|---|
| Rollback sebuah transaksi | `sudo dnf history undo <id>` |
|---|
| Instal grup paket | `sudo dnf groupinstall "<group>"` |
|---|
| Aktifkan sebuah repositori | `sudo dnf config-manager –enable <repo>` |
|---|
Riwayat Transaksi dan Rollback DNF
Ini adalah salah satu fitur DNF yang paling bernilai secara operasional dan salah satu yang ditangani YUM dengan buruk. Setiap instalasi, pembaruan, atau penghapusan dicatat di `/var/lib/dnf/history/`. Untuk memeriksa transaksi terbaru:
“`bash
dnf history list
“`
Untuk melihat persis apa yang berubah dalam transaksi tertentu:
“`bash
dnf history info <transaction-id>
“`
Untuk membatalkan sebuah transaksi (misalnya, melakukan rollback pembaruan yang bermasalah):
“`bash
sudo dnf history undo <transaction-id>
“`
Kemampuan ini sangat berguna di VPS dengan cPanel di mana pembaruan paket mungkin berkonflik dengan dependensi control panel.
File Konfigurasi DNF
Konfigurasi global DNF berada di `/etc/dnf/dnf.conf`. Parameter penyetelan utama untuk penggunaan produksi:
“`ini
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
“`
- `installonly_limit=3` — hanya menyimpan 3 versi kernel terakhir, mencegah `/boot` penuh.
- `clean_requirements_on_remove=True` — menghapus dependensi yang tidak terpakai secara otomatis saat penghapusan paket.
- `best=True` — selalu menginstal versi terbaru yang tersedia, memunculkan error alih-alih melakukan downgrade secara diam-diam.
Langkah 6: Mengonfigurasi DNF sebagai Manajer Paket Default
Di RHEL/CentOS 7, YUM tetap menjadi default sistem. Anda memiliki dua opsi untuk menjadikan DNF antarmuka utama Anda.
Opsi A: Alias Shell (Tingkat Pengguna, Non-Destruktif)
Tambahkan yang berikut ke `~/.bashrc` (untuk pengguna saat ini) atau `/etc/bashrc` (seluruh sistem):
“`bash
alias yum='dnf'
“`
Terapkan segera:
“`bash
source ~/.bashrc
“`
Keterbatasan: Alias ini hanya berlaku untuk sesi shell interaktif. Skrip yang memanggil `yum` secara langsung melalui jalur absolutnya (`/usr/bin/yum`) atau yang berjalan di bawah pengguna berbeda (misalnya, cron job, unit systemd) tidak terpengaruh.
Opsi B: Symbolic Link (Tingkat Sistem)
Untuk penggantian yang lebih menyeluruh, buat symbolic link yang mengalihkan binary `yum` ke `dnf`:
“`bash
sudo mv /usr/bin/yum /usr/bin/yum.bak
sudo ln -s /usr/bin/dnf /usr/bin/yum
“`
Peringatan kritis: Pendekatan ini memengaruhi semua pengguna dan semua skrip di seluruh sistem. Uji secara menyeluruh di lingkungan non-produksi terlebih dahulu. Beberapa skrip sistem dan alat pihak ketiga (termasuk komponen cPanel/WHM tertentu) secara eksplisit memanggil `/usr/bin/yum` dan mungkin berperilaku tidak terduga jika binary diganti. Selalu cadangkan binary asli seperti yang ditunjukkan di atas.
Opsi C: DNF sebagai Plugin YUM (Direkomendasikan untuk Server)
Pendekatan paling bersih untuk server produksi adalah membiarkan YUM tetap utuh dan cukup menggunakan `dnf` secara eksplisit dalam alur kerja dan skrip otomasi Anda sendiri. Ini menghindari risiko merusak tooling sistem sambil memberi Anda akses penuh ke kemampuan DNF.
Jebakan Praktis dan Kasus Edge
Ini adalah masalah yang muncul dalam deployment nyata dan jarang dibahas dalam tutorial dasar.
Konflik kunci GPG: Jika Anda menginstal paket dari beberapa repositori pihak ketiga, penegakan GPG yang lebih ketat dari DNF (ketika `gpgcheck=1`) mungkin menolak paket yang sebelumnya diterima YUM secara diam-diam. Selalu impor kunci GPG repositori secara eksplisit dengan `sudo rpm –import <key-url>`.
Ketidakcocokan plugin: Beberapa plugin YUM (misalnya, `yum-plugin-fastestmirror`) tidak memiliki padanan DNF langsung atau berperilaku berbeda. DNF memiliki plugin `fastestmirror`-nya sendiri (`dnf-plugin-fastestmirror`), tetapi tidak diaktifkan secara default. Instal dengan `sudo dnf install python3-dnf-plugin-fastestmirror`.
Perbedaan lokasi cache: YUM menyimpan cache metadata di `/var/cache/yum/`. DNF menggunakan `/var/cache/dnf/`. Jika ruang disk terbatas, kedua cache dapat berdampingan dan mengonsumsi ruang yang signifikan. Jalankan `sudo dnf clean all` dan `sudo yum clean all` secara independen untuk mengklaim kembali ruang.
Manajemen langganan RHEL: Pada sistem RHEL 7 yang terdaftar (berbeda dengan CentOS), plugin `subscription-manager` terintegrasi dengan YUM. DNF di RHEL 7 mungkin tidak sepenuhnya menghormati repositori yang dibatasi langganan tanpa konfigurasi tambahan. Verifikasi dengan `subscription-manager repos –list-enabled` setelah beralih.
Sensitivitas versi Python: DNF di CentOS 7 menggunakan binding Python 2 (`python-dnf`). Jika Anda telah meningkatkan ke Python 3 di sistem Anda, pastikan Anda tidak secara tidak sengaja merusak rantai dependensi `python-dnf`. DNF 4+ di RHEL 8+ menggunakan Python 3 secara native.
Merencanakan Jalur Migrasi Anda Melampaui CentOS 7
CentOS 7 mencapai end-of-life pada 30 Juni 2024. Menginstal DNF adalah peningkatan operasional yang berguna, tetapi tidak mengubah postur keamanan mendasar dari distribusi EOL. Jika Anda masih menjalankan beban kerja CentOS 7, rencana migrasi ke AlmaLinux 8/9, Rocky Linux 8/9, atau RHEL 8/9 harus ada dalam peta jalan Anda. Semua distribusi ini menggunakan DNF secara native, membuat keakraban yang Anda bangun sekarang dapat langsung ditransfer.
Bagi tim yang menjalankan beberapa layanan di infrastruktur yang sudah tua, VPS Control Panels dapat secara signifikan menyederhanakan pengelolaan lingkungan paralel selama jendela migrasi.
Jika beban kerja Anda mencakup stack web hosting, migrasi ke distribusi modern juga memungkinkan Anda memanfaatkan sepenuhnya otomasi SSL Certificates melalui Certbot dan ACME, yang memiliki dukungan jauh lebih baik di RHEL 8+ dan turunannya.
Matriks Keputusan Referensi Cepat
Gunakan daftar periksa ini sebelum dan sesudah instalasi untuk mengonfirmasi pengaturan yang bersih dan aman untuk produksi:
- [ ] `yum update -y` selesai tanpa error sebelum menginstal EPEL
- [ ] Repositori EPEL diverifikasi aktif melalui `yum repolist | grep epel`
- [ ] `dnf –version` mengembalikan string versi yang valid
- [ ] Output `dnf repolist` cocok dengan output `yum repolist`
- [ ] `/etc/dnf/dnf.conf` ditinjau dan disetel untuk lingkungan Anda
- [ ] `installonly_limit` diatur untuk mencegah overflow partisi `/boot`
- [ ] Keputusan dibuat tentang strategi alias vs. symlink vs. koeksistensi
- [ ] Binary YUM dicadangkan jika pendekatan symlink digunakan
- [ ] Cron job dan skrip otomasi diaudit untuk jalur `yum` yang dikodekan secara keras
- [ ] Timeline migrasi EOL CentOS 7 didokumentasikan
FAQ
Bisakah DNF dan YUM berdampingan di sistem CentOS 7 yang sama tanpa konflik?
Ya. Kedua alat membaca dari `/etc/yum.repos.d/` dan mempertahankan direktori cache terpisah. Keduanya berbagi database RPM (`/var/lib/rpm`), sehingga transaksi yang diselesaikan oleh salah satu langsung terlihat oleh yang lain. Menjalankan keduanya secara bersamaan (misalnya, dua instalasi bersamaan) akan menyebabkan konflik kunci RPM, tetapi penggunaan berurutan sepenuhnya aman.
Apakah menginstal DNF di CentOS 7 akan merusak plugin YUM yang ada?
Tidak. DNF terinstal sebagai binary independen dan tidak memodifikasi instalasi YUM. Plugin YUM Anda yang ada tetap utuh. Namun, DNF tidak memuat plugin YUM — jika Anda mengandalkan plugin YUM tertentu, Anda perlu menemukan dan menginstal padanan DNF-nya secara terpisah.
Apakah DNF di CentOS 7 mendukung modul DNF (aliran modul)?
Tidak. Aliran modul DNF adalah fitur yang diperkenalkan di DNF 4 dan RHEL/CentOS 8. Versi DNF yang tersedia melalui EPEL untuk CentOS 7 adalah DNF 4.x tetapi dukungan aliran modul memerlukan infrastruktur repositori AppStream, yang tidak ada di CentOS 7.
Mengapa `dnf update` terkadang menghasilkan hasil yang berbeda dari `yum update` di sistem yang sama?
Resolver `libsolv` DNF menerapkan logika dependensi yang lebih ketat dan mungkin menyelesaikan pemilihan versi secara berbeda dari resolver internal YUM. Dalam kebanyakan kasus hasilnya identik, tetapi di lingkungan dengan dependensi yang kompleks atau berkonflik, DNF mungkin memilih versi paket yang berbeda atau menolak transaksi yang sebelumnya diizinkan YUM secara diam-diam. Ini adalah fitur, bukan bug — perilaku DNF lebih dapat diprediksi dan diaudit.
Apakah aman menggunakan DNF di server CentOS 7 yang menghosting aplikasi web produksi?
Ya, dengan catatan bahwa Anda menggunakan pendekatan koeksistensi (biarkan YUM tetap utuh, gunakan DNF secara eksplisit) daripada mengganti binary YUM. Verifikasi bahwa perangkat lunak control panel atau otomasi deployment apa pun di server Anda tidak memiliki asumsi yang dikodekan secara keras tentang perilaku YUM sebelum beralih alur kerja utama Anda ke DNF.
