Panduan Perintah dnf untuk Pengguna apt di Fedora & Rocky
Ketahui padanan perintah dnf bagi setiap arahan apt untuk Rocky Linux, AlmaLinux dan Fedora. Kami sertakan cara mengurus repositori serta proses rollback yang tiada pada apt.
Jawapan ringkas
Peralihan daripada apt kepada dnf kebanyakannya melibatkan perubahan perbendaharaan kata. apt install nginx menjadi dnf install nginx. apt remove nginx menjadi dnf remove nginx. apt update tidak mempunyai padanan langsung, kerana dnf menyegarkan metadata repositorinya sendiri apabila salinan cache menjadi lama. Separuh daripada terjemahan ini mudah dan boleh dilihat dalam satu skrin. Separuh lagi yang berguna melibatkan empat operasi yang tidak mempunyai padanan langsung: menambah repositori, membatalkan transaksi, memasang kumpulan pakej, dan menjalankan kemas kini tanpa pengawasan.
Setiap arahan di bawah ditulis untuk anda jalankan pada pelayan anda sendiri. Baca ringkasan transaksi yang dicetak oleh dnf sebelum anda menjawab y, terutamanya semasa proses pembuangan pakej.
Distro manakah yang menggunakan dnf, dan yang manakah menggunakan apt
dnf ialah pengurus pakej pada Fedora, pada Red Hat Enterprise Linux (RHEL), dan pada binaan semula RHEL: Rocky Linux, AlmaLinux dan CentOS Stream. apt ialah pengurus pakej pada Debian dan pada semua sistem yang diterbitkan daripada Debian, yang pada VPS hampir selalu bermaksud Ubuntu. Tiada jawapan ketiga. Jika senarai imej pembekal anda menawarkan Rocky Linux atau AlmaLinux, anda akan mendapat dnf. Jika ia menawarkan Ubuntu, anda akan mendapat apt.
Format pakej mengikut alat yang digunakan. dnf memasang fail .rpm dan pangkalan datanya ialah rpm. apt memasang fail .deb dan pangkalan datanya ialah dpkg. Itulah sebabnya banyak halaman pemasangan vendor mempunyai satu tab untuk setiap keluarga, dan sebab mengapa .deb yang dimuat turun daripada halaman keluaran projek tidak berguna pada Rocky Linux.
Tidak kira keluarga mana yang anda gunakan, log masuk pertama memerlukan kerja yang sama. Sepuluh minit pertama pada VPS baharu terpakai untuk kedua-duanya. Hanya arahan pemasangan yang berubah.
Setiap arahan apt dan padanannya dalam dnf
Pasang, buang, cari dan paparkan. Perkataan yang digunakan hampir sama bagi kedua-dua pihak.
# apt
sudo apt install nginx
sudo apt remove nginx
apt search nginx
apt show nginx
# dnf
sudo dnf install nginx
sudo dnf remove nginx
dnf search nginx
dnf info nginxapt show adalah dnf info. Ini merupakan satu-satunya kata kerja yang ditukar nama dalam kumpulan ini, namun terdapat perbezaan tingkah laku yang sering memerangkap pengguna. dnf remove juga membuang dependensi yang tidak lagi diperlukan oleh mana-mana pakej lain, manakala apt remove membiarkannya terpasang untuk apt autoremove pada masa hadapan. Oleh itu, membuang satu utiliti kecil pada Rocky Linux boleh menyebabkan sedozen pustaka turut dibuang. Baca senarai tersebut sebelum membuat pengesahan.
Segarkan metadata, semak kemas kini yang menunggu, dan naik taraf.
# apt
sudo apt update
apt list --upgradable
sudo apt install --only-upgrade nginx
sudo apt upgrade
# dnf
sudo dnf makecache
dnf check-update
sudo dnf upgrade nginx
sudo dnf upgradeapt update adalah wajib bagi pihak apt, kerana apt menggunakan apa jua metadata yang ada pada cakera dan akan memasang versi yang mungkin sudah lama dikeluarkan daripada arkib. dnf menyemak usia cache sebelum setiap transaksi dan memuat turun metadata baharu secara automatik, jadi sudo dnf makecache hanya digunakan untuk memaksa muat turun dilakukan sekarang dan bukannya semasa pemasangan anda yang seterusnya.
apt membahagikan naik taraf keseluruhan sistem kepada dua bahagian, manakala dnf tidak. apt upgrade enggan membuang sebarang pakej yang terpasang, jadi ia akan berhenti sekiranya kemas kini memerlukan pakej dibuang. apt full-upgrade ialah versi yang dibenarkan untuk membuang pakej. dnf tidak mempunyai sekatan sedemikian, yang bermaksud dnf upgrade adalah setara dengan apt full-upgrade, bukannya apt upgrade. dnf update ialah alias lama bagi arahan yang sama dan masih berfungsi.
Satu perincian penting jika anda menulis skrip: dnf check-update akan keluar dengan status 100 apabila terdapat kemas kini yang menunggu dan 0 apabila tiada. apt list --upgradable akan keluar dengan status 0 dalam kedua-dua keadaan, jadi skrip perlu menghurai outputnya.
Senaraikan pakej yang terpasang, dan cari pakej mana yang memiliki sesuatu fail.
# apt
dpkg -l
dpkg -S /usr/sbin/nginx
dpkg -L nginx
apt-file search /usr/sbin/nginx
# dnf
dnf list --installed
rpm -qf /usr/sbin/nginx
rpm -ql nginx
dnf provides /usr/sbin/nginxBaris terakhir bagi setiap blok menjawab soalan yang berbeza daripada soalan di atasnya. dpkg -S dan rpm -qf hanya mencari pakej yang sudah terpasang, jadi ia menjawab "apa yang meletakkan fail ini di sini". apt-file search dan dnf provides mencari dalam repositori, jadi ia menjawab "apa yang perlu saya pasang untuk mendapatkan fail ini". apt-file ialah pakej berasingan pada Ubuntu dan memerlukan sudo apt-file update sebelum penggunaan kali pertama. dnf provides tidak memerlukan apa-apa tambahan, walaupun penggunaan kali pertama mungkin perlahan kerana dnf memuat turun senarai fail repositori untuk memberikan jawapan.
Untuk menyenaraikan fail di dalam pakej yang belum anda pasang, gunakan dnf repoquery -l nginx. Bagi pihak apt, ia adalah apt-file list nginx.
Autoremove, bersihkan cache, dan tahan versi.
# apt
sudo apt autoremove
sudo apt clean
sudo apt-mark hold nginx
apt-mark showhold
sudo apt-mark unhold nginx
# dnf
sudo dnf autoremove
sudo dnf clean all
sudo dnf versionlock add nginx
dnf versionlock list
sudo dnf versionlock delete nginxversionlock tidak dipasang secara lalai pada Rocky Linux atau AlmaLinux, jadi baris pertama tersebut akan gagal dengan ralat No such command: versionlock pada sistem baharu. Pasang ia terlebih dahulu dengan sudo dnf install python3-dnf-plugin-versionlock. apt tidak memerlukan apa-apa tambahan untuk apt-mark hold, kerana "hold" merupakan status dpkg dan bukannya pemalam.
Di mana pemetaan terputus: menambah repositori
Ini adalah bahagian yang menyebabkan pentadbir Ubuntu mencari arahan yang tidak wujud. Tiada add-apt-repository pada dnf, dan tiada personal package archives (PPA). PPA ialah perkhidmatan yang dijalankan oleh Launchpad, dan Launchpad merupakan infrastruktur Ubuntu. Tiada apa-apa dalam dunia RPM yang mengehoskan perkara sedemikian.
Apa yang dnf miliki sebaliknya ialah satu fail teks biasa bagi setiap repositori dalam /etc/yum.repos.d/, yang berakhir dengan .repo.
[docker-ce-stable]
name=Docker CE Stable
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg$releasever dan $basearch ialah pemboleh ubah dnf. dnf mengisi nombor keluaran utama dan seni bina CPU anda semasa runtime, jadi fail yang sama berfungsi pada versi 9 dan versi 10, serta pada x86_64 dan aarch64.
Kebanyakan vendor menerbitkan fail tersebut dan meminta anda untuk mendapatkannya. Arahan Docker sendiri untuk RHEL dan binaan semulanya terdiri daripada dua arahan:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoBaris pertama ada di sana kerana config-manager ialah pemalam, bukan sebahagian daripada dnf itu sendiri. Langkau baris tersebut dan baris kedua akan gagal dengan No such command: config-manager. Tiada apa-apa yang menghalang anda daripada memuat turun fail .repo yang sama dengan curl ke dalam /etc/yum.repos.d/ secara manual, dan hasilnya adalah sama. Memasang Docker pada VPS membincangkan bahagian Debian bagi tugasan yang sama, di mana langkah setara menulis senarai sumber dan kunci tandatangan ke dalam dua direktori berbeza.
Perbezaan susun atur menentukan tempat anda mencari apabila repositori berkelakuan tidak betul. apt menyimpan definisi dalam /etc/apt/sources.list dan /etc/apt/sources.list.d/, dengan kunci tandatangan disimpan secara berasingan di bawah /etc/apt/keyrings/. dnf menyimpan segala-galanya dalam /etc/yum.repos.d/, dan kunci tersebut merupakan URL di dalam fail .repo, jadi terdapat satu fail untuk dibaca dan satu fail untuk dipadam. apt versi baharu telah beralih ke bentuk yang sama dengan format deb822, iaitu satu fail .sources bagi setiap repositori. Jika anda telah menemui ralat sumber pendua deb822 pada Ubuntu, anda sebenarnya telah pun berhadapan dengan separuh daripada masalah apt ini.
EPEL ialah arkib yang diandaikan oleh kebanyakan panduan
Extra Packages for Enterprise Linux (EPEL) ialah projek Fedora yang membina pakej Fedora untuk RHEL dan binaan semula (rebuilds) yang berkaitan. Ia merupakan perkara paling hampir dengan PPA universal dalam dunia ini, dan sebilangan besar tutorial mengandaikan ia sudah didayakan. Jika dnf install menjawab No match for argument bagi pakej yang anda boleh lihat di laman web projek itu sendiri, EPEL ialah perkara pertama yang perlu diperiksa.
Pada Rocky Linux dan AlmaLinux:
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release
sudo dnf makecacheCRB ialah CodeReady Builder, iaitu repositori pustaka yang disertakan bersama pengedaran tersebut tetapi tidak didayakan secara lalai. Kebanyakan pakej EPEL bergantung pada sesuatu di dalamnya, jadi mendayakan EPEL tanpa CRB tidak akan gagal pada ketika itu. Ia akan gagal kemudian, semasa waktu pemasangan, dengan dependency yang tidak dapat diselesaikan pada pakej yang anda tidak pernah dengar. Dayakan CRB dahulu dan ralat jenis itu akan hilang.
Pada RHEL sendiri, CRB diperoleh melalui langganan anda dan bukannya melalui config-manager, jadi ikuti arahan EPEL daripada Red Hat sendiri untuk langkah tersebut. Fedora tidak memerlukan semua ini, kerana repositori utamanya sudah membawa apa yang di-backport oleh EPEL. Polisi EPEL adalah untuk tidak menggantikan pakej yang dibekalkan oleh RHEL, jadi menambah repositori tersebut tidak mengubah apa-apa yang sudah dipasang pada pelayan anda.
dnf history undo, fungsi yang tidak dimiliki oleh apt
dnf merekodkan setiap transaksi, dan ia boleh membina songsangan bagi sesuatu transaksi.
sudo dnf history
sudo dnf history info 42
sudo dnf history undo 42dnf history mencetak senarai transaksi bernombor berserta baris perintah yang memulakan setiap transaksi tersebut. undo membina transaksi yang bertentangan: pakej yang dipasang oleh transaksi tersebut akan dibuang, dan pakej yang dinaik taraf akan kembali kepada versi asal yang anda miliki. Ini merupakan ciri yang paling dirindui oleh pengguna apt selepas bertukar kepada dnf.
Ia mempunyai had sebenar, dan anda perlu mengetahuinya sebelum bergantung kepadanya. undo hanya boleh memasang semula versi pakej yang masih wujud dalam repositori yang didayakan, jadi sebaik sahaja binaan lama digugurkan daripada cermin (mirror), proses undo akan gagal dengan ralat not-found. Rollback juga hanya terhenti pada pangkalan data pakej. Fail konfigurasi yang ditulis semula semasa naik taraf akan kekal dalam keadaan baharu, dan skema pangkalan data yang dimigrasi oleh servis semasa permulaan pertama akan kekal termigrasi. dnf mengembalikan fail asal, tetapi ia tidak mengembalikan data anda.
apt tidak mempunyai fungsi yang setara. /var/log/apt/history.log merekodkan apa yang berlaku dengan tepat, termasuk baris perintah, tetapi membaca log bukanlah bermaksud membatalkan tindakan tersebut. Pemulihan pada sisi apt perlu dilakukan secara manual: jalankan apt list -a nginx untuk melihat versi yang masih disimpan oleh arkib, kemudian sudo apt install nginx=<exact version string> untuk menetapkan (pin) versi tersebut, dan tambah sudo apt-mark hold nginx supaya naik taraf seterusnya tidak membatalkan pembaikan anda.
Kumpulan pakej tidak mempunyai setara dalam apt
dnf boleh memasang set pakej yang dinamakan dalam satu arahan.
dnf group list
dnf group info "Development Tools"
sudo dnf group install "Development Tools"Panduan lama menulis dnf groupinstall "Development Tools". Alias tersebut berfungsi pada dnf 4 tetapi telah dibuang pada dnf 5, jadi dnf group install dua perkataan ialah satu-satunya ejaan yang berfungsi di mana-mana. Gunakannya dan jangan fikirkan lagi.
apt tidak mempunyai kumpulan. Konsep yang paling hampir dengan Debian ialah metapackage, iaitu pakej kosong yang kandungan satu-satunya hanyalah senarai dependensi, contohnya build-essential. Perbezaan praktikalnya adalah pada cara penyingkiran: membuang metapackage akan membiarkan dependensinya kekal terpasang sehingga anda menjalankan apt autoremove, manakala dnf group remove akan membuang pakej kumpulan tersebut bersamanya dalam transaksi yang sama.
unattended-upgrades dan dnf-automatic
Kedua-dua keluarga perisian ini menyediakan cara untuk memasang kemas kini tanpa perlu log masuk. Alat-alat ini tidak berkongsi apa-apa selain tujuan penggunaannya.
Pada Ubuntu dan Debian, pakejnya ialah unattended-upgrades, yang dikonfigurasikan dalam /etc/apt/apt.conf.d/50unattended-upgrades, tempat anda menyenaraikan asal (origin) yang dibenarkan untuk menarik kemas kini. Menyediakan unattended upgrades pada Ubuntu membincangkan fail konfigurasi tersebut serta persoalan but semula (reboot) yang berkaitan dengannya.
Pada Rocky Linux, AlmaLinux dan Fedora, pakejnya ialah dnf-automatic, dan pemasa (timer) systemd yang anda aktifkan akan menentukan kelakuannya.
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer
systemctl list-timers 'dnf-automatic*'dnf-automatic-install.timer memuat turun dan menggunakan kemas kini. dnf-automatic-download.timer memuat turun kemas kini tersebut dan berhenti, membiarkan proses pemasangan dilakukan oleh anda. dnf-automatic-notifyonly.timer hanya membuat laporan. Setiap unit tersebut mengatasi tetapan apply_updates dalam /etc/dnf/automatic.conf, jadi pemasa yang anda pilih adalah lebih penting daripada apa yang dinyatakan dalam fail konfigurasi.
Untuk mengehadkannya kepada pembaikan keselamatan sahaja, tetapkan upgrade_type = security dalam /etc/dnf/automatic.conf. Penapis tersebut bergantung kepada repositori anda yang menerbitkan errata keselamatan, jadi semak dahulu dengan dnf updateinfo list security. Hasil kosong pada mesin yang mempunyai kemas kini tertangguh bermakna metadata tersebut tiada, dan security tidak akan memasang apa-apa langsung.
Pada Fedora, dnf 5 telah menamakan semula unit tersebut. Ia kini ialah dnf5-automatic.timer, dan ia membaca /etc/dnf/automatic.conf yang sama.
Adakah yum masih lagi satu arahan yang sebenar?
Ya, dan ia tidak melakukan apa-apa secara sendirian. Pada Rocky Linux, AlmaLinux dan CentOS Stream, /usr/bin/yum merupakan pautan simbolik yang menghala ke dnf. Semak milik anda:
ls -l /usr/bin/yum
dnf --versionSintaks yum lama masih muncul dalam tutorial kerana kebanyakannya masih berfungsi secara terus. yum install, yum remove dan yum update kesemuanya berfungsi. Satu tabiat yang patut ditinggalkan: yum-config-manager masih wujud sebagai binari tersendiri pada sistem dnf 4, namun dnf config-manager ialah ejaan yang digunakan oleh dokumentasi semasa, dan ia merupakan ejaan yang akan terus berfungsi apabila pelayan beralih ke dnf 5.
dnf 4 dan dnf 5: semak sebelum anda menyalin arahan
dnf 5 ialah penulisan semula kod, dan ia menukar ejaan bagi beberapa arahan. Fedora 41 dan versi terkemudian menyertakan versi ini sebagai dnf. Pengedaran berasaskan perusahaan lebih perlahan dalam melakukan pertukaran, jadi jangan meneka berdasarkan nama pengedaran. Jalankan dnf --version pada pelayan anda sendiri dan baca baris pertama, kerana nombor tersebut menentukan sintaks yang perlu anda gunakan di bawah.
Demonstrasi paling jelas datang daripada Docker, yang menerbitkan arahan repositori berbeza untuk setiap versi. Pada RHEL dan pengedaran berasaskan RHEL, dengan dnf 4:
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoPada Fedora, dengan dnf 5:
sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repoVendor yang sama, tugas yang sama, perkataan yang berbeza. dnf 5 menjadikan config-manager sebagai alat yang dipacu oleh sub-arahan, jadi flag --add-repo yang lama tidak diterima dan anda akan mendapat ralat penggunaan (usage error) dan bukannya repositori. Satu lagi perkara yang akan anda temui ialah mendayakan repositori: dnf config-manager --set-enabled crb pada dnf 4 menjadi dnf config-manager setopt crb.enabled=1 pada dnf 5.
Pilihan yang sebenarnya penting
Memilih pengedaran pelayan berdasarkan pengurus pakej sahaja adalah fokus yang salah. dnf dan apt melakukan kerja yang sama, dan perbendaharaan katanya boleh dipelajari dalam satu petang. Perkara yang akan mengubah pengalaman anda sepanjang tahun ialah model keluaran di sebalik repositori tersebut. Fedora bergerak dengan pantas dan sesuatu keluaran akan berhenti menerima kemas kini kira-kira tiga belas bulan selepas ia muncul; ini sesuai untuk stesen kerja tetapi menyusahkan bagi pelayan yang anda tidak mahu bina semula. Rocky Linux dan AlmaLinux mengikut jejak RHEL, jadi anda mendapat tempoh sokongan selama sepuluh tahun dan versi pakej yang sengaja dikekalkan statik. Ubuntu menawarkan kedua-dua bentuk ini, dan perbezaan antara Ubuntu LTS dan keluaran interim pada pelayan adalah keputusan yang sama yang dibuat dalam dunia apt.
Sehingga Ogos 2026, kesemuanya adalah imej VPS biasa. Pilih tempoh sokongan yang anda mahukan, kemudian pelajari sepuluh arahan di atas.
FAQ
Apakah setara dnf bagi apt update?
Tiada arahan yang perlu anda jalankan. dnf menyemak usia metadata yang dicache sebelum setiap transaksi dan memuat turun salinan baharu apabila ia tamat tempoh, jadi dnf install pada pelayan yang tidak disentuh selama sebulan masih melihat pakej terkini. sudo dnf makecache wujud dan memang memaksa muat turun tersebut, tetapi kegunaan sebenarnya adalah untuk memindahkan tempoh menunggu ke masa yang anda pilih dan bukannya semasa pemasangan seterusnya. Arahan yang menjawab "apa yang menanti saya" ialah dnf check-update, yang memetakan kepada apt list --upgradable dan keluar dengan status 100 apabila kemas kini tersedia.
Adakah terdapat setara PPA pada Rocky Linux atau Fedora?
Tidak. Personal package archives ialah perkhidmatan Launchpad dan Launchpad merupakan infrastruktur Ubuntu, jadi add-apt-repository tidak mempunyai apa-apa untuk diterjemahkan. Setara RPM ialah fail .repo dalam /etc/yum.repos.d/ yang mengandungi nama, baseurl dan gpgkey. Vendor menerbitkan fail tersebut untuk anda, dan sudo dnf config-manager --add-repo <url> pada dnf 4, atau sudo dnf config-manager addrepo --from-repofile <url> pada dnf 5, memuat turunnya ke tempat yang sepatutnya. Untuk perisian tambahan umum, jawapannya biasanya EPEL, yang anda aktifkan dengan sudo dnf config-manager --set-enabled crb diikuti oleh sudo dnf install epel-release.
Bolehkah saya membatalkan dnf upgrade yang merosakkan pelayan saya?
Ya, dengan had tertentu. Jalankan sudo dnf history untuk mencari nombor transaksi, sudo dnf history info <id> untuk melihat dengan tepat apa yang diubahnya, kemudian sudo dnf history undo <id>. Pembatalan gagal jika versi pakej lama tidak lagi hadir dalam mana-mana repositori yang diaktifkan, kerana dnf tidak mempunyai apa-apa untuk dipasang semula. Ia juga hanya membalikkan perubahan pakej. Fail konfigurasi yang ditulis semula oleh naik taraf, atau pangkalan data yang dimigrasikan oleh servis pada permulaan pertama, kekal seperti sedia ada. apt tidak mempunyai arahan setara langsung, hanya rekod dalam /var/log/apt/history.log.
Adakah yum masih berfungsi pada Rocky Linux dan AlmaLinux?
Ia berfungsi kerana /usr/bin/yum ialah pautan simbolik kepada dnf. Sahkan perkara ini pada mesin anda sendiri dengan ls -l /usr/bin/yum. Menaip yum install httpd menjalankan dnf, jadi kebanyakan tutorial lama masih berfungsi. Tulis skrip dan dokumentasi baharu dengan dnf, memandangkan nama yum hanya untuk keserasian, dan utamakan dnf config-manager berbanding binari yum-config-manager yang lebih lama.
Mengapa dnf remove mahu memadam begitu banyak pakej?
Kerana dnf membuang dependensi yang tidak lagi diperlukan oleh apa-apa sebagai sebahagian daripada transaksi yang sama, manakala apt remove membiarkannya terpasang sehingga anda menjalankan apt autoremove secara berasingan. Jadi, pembuangan yang kelihatan kecil pada Ubuntu boleh mencetak senarai yang panjang pada Rocky Linux. Senarai tersebut biasanya betul, tetapi bacalah sebelum mengesahkan. Jika terdapat pakej dalam senarai itu yang anda ingin kekalkan, pasangkannya secara eksplisit terlebih dahulu supaya dnf merekodkannya sebagai pakej yang dikehendaki.