讓centos7氣的不輕,這玩意兒太老了,什么都不好配置。
目錄
- Linux 發行版的大致分類
- 1. Red Hat 系列(RPM 系)
- 2. Debian 系列(DEB 系)
- 3. Arch 系列
- 4. SUSE 系列
- CentOS 7 的替代品推薦
- AlmaLinux 和 Rocky Linux
- 📥 下載安裝
- 配置要求
- vmware workstation pro
- 安裝vm tools
- 配置靜態IP
- 安裝一些開發工具
- dnf和yum的區別
Linux 發行版的大致分類
CentOS 7(2014年發布,EOL 到 2024-06)現在已經非常老舊,內核 3.10,各種庫都停在幾年前,對現代軟件支持非常差,踩坑無數是常態。
Linux 發行版大致可以分為幾大“家族”,它們的設計理念和包管理系統各不相同:
1. Red Hat 系列(RPM 系)
以 Red Hat Enterprise Linux 為核心,使用 .rpm
包管理系統,配套工具是 yum
(舊)或 dnf
(新):
發行版 | 特點 |
---|---|
RHEL(Red Hat Enterprise Linux) | 企業級,穩定、安全,付費支持。 |
CentOS 7/8(已結束) | RHEL 的免費克隆,7 已過期,8 改為 Stream 模式。 |
CentOS Stream | RHEL 的“滾動預發布版”,更像測試版。 |
AlmaLinux / Rocky Linux | 完全兼容 RHEL 的免費社區替代品,面向企業部署,適合替代 CentOS。 |
Oracle Linux | 也是 RHEL 克隆,附加 Oracle 特性,可免費使用。 |
2. Debian 系列(DEB 系)
使用 .deb
包,工具為 apt
,廣泛用于桌面和服務器:
發行版 | 特點 |
---|---|
Debian | 穩定、開源純凈、更新慢但可靠,適合服務器。 |
Ubuntu(Server/Cloud) | 基于 Debian,更新更積極,文檔完善,支持廣泛。阿里云/騰訊云默認發行版。 |
Kali Linux | 安全測試專用,基于 Debian。 |
3. Arch 系列
追求極簡和“滾動更新”,使用 pacman
:
發行版 | 特點 |
---|---|
Arch Linux | 發燒友級別,需要動手能力強。 |
Manjaro | 基于 Arch,但更易用,圖形化支持較好。 |
4. SUSE 系列
德國系發行版,企業用戶使用較多:
發行版 | 特點 |
---|---|
openSUSE | 社區版,穩定。 |
SUSE Linux Enterprise | 企業級,和 RHEL 類似。 |
一張圖理清所有Linux發行版的關系:https://github.com/FabioLolix/LinuxTimeline/releases/
這張圖片非常巨大!
CentOS 7 的替代品推薦
現在 CentOS 7 已停止維護,建議根據實際用途替換:
? 推薦用于 服務器生產環境:
替代品 | 說明 |
---|---|
Rocky Linux 9.x | 社區驅動,100% RHEL 兼容,開發者是原 CentOS 創始人,最靠譜的替代品。 |
AlmaLinux 9.x | 由 CloudLinux 維護,企業級,等同于 RHEL,免費無品牌限制。 |
Oracle Linux 9.x | 同樣兼容 RHEL,Oracle 加了一些優化,也可以免費使用。 |
它們都是以 RHEL 為上游構建,包格式和系統管理方式都一樣。你從 CentOS 7 遷移過去會非常順手。
? 如果你 不是非要 RPM 系,還可以考慮:
替代品 | 說明 |
---|---|
Ubuntu Server 22.04 LTS | 社區/企業都很受歡迎,LTS 支持五年(甚至十年),配套文檔齊全,容器化、云環境原生支持好。 |
Debian 12 | 極致穩定,純凈開源,很多云服務商也支持。 |
總結建議:
場景 | 推薦發行版 |
---|---|
想繼續用 RHEL 兼容系統 | Rocky Linux、AlmaLinux |
想用更廣泛文檔支持和現代軟件 | Ubuntu Server |
要純凈穩定系統自己折騰 | Debian |
內核/軟件必須新(如開發 AI、QUIC 等) | Ubuntu / Arch |
桌面用 | Manjaro / Fedora Workstation |
有些人可能會提到CentOS Stream 9。
CentOS Stream 9 當然也是一個選項,但它和 CentOS 7/8 的定位不一樣,在選擇前你需要非常清楚它的“身份”。
CentOS Stream 9 是 RHEL 9 的“滾動預發布版本”,不是穩定發行版,而是介于 Fedora 和 RHEL 之間的“開發分支”。
🧬 CentOS Stream 的定位變化
發行版 | 定位 | 說明 |
---|---|---|
Fedora | 前沿測試版 | 快速迭代,包新、變化快,是 RHEL 的技術試驗田。 |
CentOS Stream | RHEL 的開發預覽版 | 所有變更在此測試,然后合并進 RHEL。不是最終穩定版本。 |
RHEL(Red Hat Enterprise Linux) | 企業穩定版 | 基于 Stream 的成果,經過長期測試才發布更新。 |
所以 CentOS Stream ≠ RHEL ≠ CentOS(以前的 7/8)。
📦 CentOS Stream 9 的特點
優點 | 缺點 |
---|---|
? 比 RHEL 新:內核、包、工具都更靠近 Fedora | ? 沒有 ABI 穩定性保證(小版本升級可能破壞兼容性) |
? 免費、無需訂閱 | ? 新版本先推到 Stream,等于“測試場” |
? 基本與 RHEL 9 同步,很多場景兼容 | ? 企業級生產環境中不推薦用它作基座 |
舉個例子,RHEL 9.4 還沒發布的時候,Stream 9 可能已經跑在 9.5 測試版本了,你一更新系統,可能拉到還沒正式發布的軟件包。
🧭 適合使用 CentOS Stream 9 的場景
場景 | 說明 |
---|---|
開發測試環境 | 模擬 RHEL 行為,測試將來升級的影響 |
研發需要靠近 RHEL 生態 | 想緊跟最新 API/ABI 變化,提前適配 |
學習或嘗鮮 | 想學習新版工具鏈(systemd、dnf、SELinux、firewalld 等) |
? 不推薦使用 CentOS Stream 9 的情況
- 生產級別的業務服務器
- 安全審計嚴格的環境(如金融、政府、企業內網)
- 對 ABI 穩定性有強依賴(例如編譯內核模塊、定制 RPM 包)
🆚 對比:CentOS Stream 9 vs Rocky / Alma 9
項目 | CentOS Stream 9 | Rocky / AlmaLinux 9 |
---|---|---|
穩定性 | 中等(開發版) | 高(與 RHEL 完全兼容) |
更新頻率 | 高(滾動更新) | 中(跟隨 RHEL) |
使用風險 | 中等偏高 | 低 |
ABI 保證 | ? 無 | ? 有 |
適合場景 | 測試、研發 | 生產環境 |
? 總結建議
- 如果你只是臨時開發、測試環境 → CentOS Stream 9 沒問題
- 如果你要長期運行服務、搭建業務環境 → 用 Rocky Linux 9 或 AlmaLinux 9
- 如果你不喜歡 RPM 系統了 → Ubuntu Server 22.04 LTS 會更順手
所以我們將目光鎖定在了AlmaLinux 和 Rocky Linux!
AlmaLinux 和 Rocky Linux
AlmaLinux 和 Rocky Linux 都是目前 CentOS 最穩妥的替代品,完全兼容 RHEL(Red Hat Enterprise Linux),它們的目標就是成為“真正的 CentOS 接班人”。
AlmaLinux vs Rocky Linux 對比:
項目 | 🪨 Rocky Linux | 🧬 AlmaLinux |
---|---|---|
發起組織 | CentOS 創始人 Gregory Kurtzer 發起,非營利組織 RESF 管理 | 由商業公司 CloudLinux Inc. 發起,交給 AlmaLinux OS Foundation(非營利)管理 |
目標定位 | 1:1 RHEL 克隆,盡可能還原 CentOS 精神 | 同樣是 1:1 RHEL 克隆,但企業特性更強一些 |
是否收費 | 完全免費,社區驅動 | 完全免費,無需 CloudLinux 訂閱 |
穩定性/兼容性 | 與 RHEL 完全兼容 | 與 RHEL 完全兼容 |
更新節奏 | 與 RHEL 保持同步,有延遲窗口(數天內同步) | 與 RHEL 幾乎同步,有自動測試驗證鏈(CI) |
社區活躍度 | 很活躍,CentOS 原班人馬轉移而來 | 活躍,企業贊助,CI/CD 自動驗證系統更成熟 |
支持架構 | x86_64、aarch64、ppc64le、s390x | x86_64、aarch64、ppc64le、s390x |
品牌立場 | 更中立,更像“繼承者” | 企業背景更濃,穩定性保障更多 |
安全通報(Errata) | 有 | 有 |
FIPS 支持(加密合規) | 支持(手動開啟) | 支持(更易獲取 CloudLinux 支持) |
遷移工具 | 支持 migrate2rocky.sh 腳本從 CentOS7/8 遷移 | 支持 elevate 工具或 migrate2alma.sh |
CI/CD 驗證系統 | 有,但較新 | 有,CloudLinux 投入較多資源開發 |
? 共同點:它們都不會搞 Stream、不搞社區測試,始終保持穩定版本同步于 RHEL 正式版。
AlmaLinux 和 Rocky 適合誰?
場景 | 推薦選擇 |
---|---|
想要最接近 CentOS 的精神繼承 | ? Rocky Linux(CentOS 原始之魂) |
更看重穩定性和商業支持(CloudLinux 公司背書) | ? AlmaLinux |
大型企業或未來想接入云服務廠商支持 | ? 兩者皆可,Rocky 稍偏社區,Alma 偏企業 |
想跟著更透明的社區開發進度走 | ? Rocky(RESF 社區更活躍) |
想獲得 RHEL 認證體系的衍生服務 | ? AlmaLinux(支持更豐富的云平臺認證) |
其實就體驗和技術來說,它們非常接近,選哪一個都不會錯。你可以理解為:
🌍 AlmaLinux 像 RHEL 的穩定商業副本,
🧑?💻 Rocky Linux 像 RHEL 的忠實開源兄弟。
📥 下載安裝
- 🪨 Rocky Linux 官網:https://rockylinux.org
- 🧬 AlmaLinux 官網:https://almalinux.org
下載鏡像時選 Minimal ISO(最小安裝) 或 DVD ISO(完整安裝) 即可。
有些小伙伴不知道下載哪個鏡像,首先,這幾個鏡像的名字聽起來都像“差不多的 ISO 文件”,但它們用途、大小、使用場景完全不同。
📦 1. DVD ISO
“全量安裝鏡像”
含有系統安裝器 + 完整軟件包倉庫(如 GNOME、開發工具、網絡組件等)
? 特點:
項目 | 說明 |
---|---|
文件大小 | 6~8 GB 左右 |
網絡依賴 | ? 無,可全離線安裝 |
包含內容 | 完整 repo,適合 GUI 桌面、服務器全功能安裝 |
適合人群 | 沒網絡/慢網絡環境,或需要全功能離線部署 |
安裝方式 | 可在安裝過程中自由選擇組件(最小系統 / GUI 桌面 / Web 服務 等) |
? 推薦使用場景:
- 你要部署一個有 GUI、Web、數據庫、多服務的完整服務器
- 內網安裝(比如機房、私有云),不能聯網
🌐 2. Boot ISO
“網絡引導鏡像”
是個小的安裝啟動器,安裝過程中聯網拉取軟件包
? 特點:
項目 | 說明 |
---|---|
文件大小 | 700~800 MB |
網絡依賴 | ? 必須聯網 |
包含內容 | 只含安裝器本身,不含 RPM 包 |
適合人群 | 習慣聯網安裝,想要安裝最新包版本 |
安裝方式 | 安裝界面會引導你選擇軟件源并在線下載安裝 |
? 推薦使用場景:
- 網絡暢通
- 想獲取最新包(或指定自己的 repo)
- 不希望下載一個龐大的 DVD ISO
💿 3. Minimal ISO
“最小系統 ISO”
離線可安裝的簡版系統,只含基本工具包
? 特點:
項目 | 說明 |
---|---|
文件大小 | ~2 GB 左右 |
網絡依賴 | ? 可離線安裝 |
包含內容 | 僅系統最基本組件(如 shell、network、yum/dnf) |
安裝方式 | 安裝后需要手動安裝額外組件(如 docker、vim、開發工具) |
? 推薦使用場景:
- 用于部署精簡、定制化的生產環境
- 安裝后你準備用腳本/Ansible 自定義安裝所需服務
- 云鏡像構建、自建容器環境、最小 attack surface 場景
🧭 如何選擇鏡像?
需求 | 推薦鏡像 |
---|---|
有網絡,想快速裝最新系統 | ? Boot ISO |
沒網絡/內網環境,要全功能安裝 | ? DVD ISO |
想極致精簡、自己裝服務、構建鏡像 | ? Minimal ISO |
🔚 總結一句話:
Rocky Linux 更“像” CentOS,而 AlmaLinux 更“強”于 CentOS。
選哪個都可以,重要的是別再用 CentOS 7/8/Stream 了 😂。
配置要求
DVD(全量安裝) vs Minimal 安裝資源占用對比
這兩個鏡像在 安裝前期(ISO 大小)差別很大,但安裝后資源占用完全取決于你裝了哪些組件:
對比項 | DVD 安裝(全量) | Minimal 安裝 |
---|---|---|
ISO 大小 | 6~8 GB | 2 GB 左右 |
安裝體積(磁盤) | 通常 4~8+ GB(取決于是否安裝 GUI) | 安裝后 <1.5 GB |
內存使用 | 啟動后可能占 600MB~1.5GB(如果裝 GUI) | 啟動后僅占用 100MB~250MB |
服務數量 | 啟動時幾十個服務(cron、cups、NetworkManager、GUI 等) | 只有基礎服務(systemd、sshd、network) |
啟動速度 | 慢(服務多) | 快(服務少) |
攻擊面 | 大 | 小(僅核心組件) |
Minimal 是精簡系統,資源占用低;DVD 是全功能系統,占用取決于你選裝了什么。
AlmaLinux vs Rocky Linux 的資源占用區別?
這個問題更簡單:幾乎沒有區別。
因為它們都是 100% RHEL 兼容克隆,用的同一套包、內核、服務、默認配置,唯一不同是鏡像源、簽名、logo 等。
? 兩者在資源占用上完全一致:
項目 | AlmaLinux | Rocky Linux |
---|---|---|
內存占用 | ?? 一樣 | ?? 一樣 |
磁盤使用 | ?? 一樣 | ?? 一樣 |
運行效率 | ?? 一樣 | ?? 一樣 |
啟動服務 | ?? 一樣 | ?? 一樣 |
除非你更改配置或安裝額外服務,否則運行效率和資源使用無差異。
VMware 下如何分配資源?
🧠 推薦資源配置(Minimal 系統):
項目 | 最低配置 | 建議配置 |
---|---|---|
CPU | 1 vCPU | 2 vCPU(更流暢) |
內存 | 512 MB | 1024 MB 或更高(方便運行服務) |
磁盤 | 8 GB | 20 GB(留空間裝 docker/k8s 等) |
網卡 | NAT or Bridge | NAT for 外網訪問 |
?? 注意:如果你要裝 GUI 桌面(Gnome),內存最好 2 GB 起步,否則非常卡。
🎯 總結選擇建議
使用場景 | 推薦 |
---|---|
學習、測試命令行、部署容器服務 | ? Minimal ISO |
需要圖形界面、辦公、開發工具一鍵安裝 | ? DVD ISO(安裝時勾選 GUI) |
網絡環境好,喜歡裝最新版包 | ? Boot ISO |
要部署生產環境 | ? Minimal ISO + 手動配置(更可控) |
? 最后貼士
- Minimal 是輕量王者,特別適合做開發機、k8s 節點、鏡像打包環境;
- 在 VMware 中啟用 “Guest OS type: Red Hat Enterprise Linux 9.x 64-bit” 會更兼容;
- 推薦啟用虛擬化加速(Intel VT-x / AMD-V)以提升性能;
- 如果是搭建 DevOps 環境、K8s、Docker、Ansible、NGINX 等,Minimal 是首選。
vmware workstation pro
要玩轉AlmaLinux 和 Rocky Linux v10版本,則需要下載vmware workstation pro 17,剛好vmware workstation pro在去年免費了。
Fusion 是 Mac 專用的虛擬機軟件,Workstation 是 Windows / Linux
專用的虛擬機軟件。功能接近,底層架構和宿主平臺不同。
那我們就去下載一個,目前vm改為了訂閱式,下載比較復雜。
首先進入官網:https://www.vmware.com/
在搜索欄輸入:Desktop Hypervisor,然后在結果頁找到Products下的workstation-and-fusion:
進入如下鏈接:https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion,然后點擊下載:
會要求你進行登錄,沒賬號可以注冊。
登錄完成后點擊My Downloads即可下載免費的workstation:
安裝好后,我就可以創建新的虛擬機了!
可以看到新版的vm 直接就檢測到了對應的發行版!后續安裝過程這里略過,可以發現和centos是一樣的安裝步驟:
安裝vm tools
給虛擬機安裝 VMware Tools 是一個非常重要的步驟,它可以讓虛擬機更流暢地運行,帶來以下好處:
- 自動調整分辨率、全屏支持
- 主機和虛擬機之間復制粘貼 / 拖拽文件
- 更好的鼠標同步和性能優化
- 共享文件夾功能
- 準確的系統時間同步
使用 VMware 自帶的 Tools 安裝(經典方法)步驟如下(在虛擬機中操作):
-
在 VMware 主機界面點擊:
虛擬機(VM) → 安裝 VMware Tools
- 相當于向虛擬機掛載一張虛擬光盤
-
在虛擬機中掛載這張光盤:
mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom
-
解壓安裝包:
cp /mnt/cdrom/VMwareTools-*.tar.gz /tmp cd /tmp tar -zxvf VMwareTools-*.tar.gz
-
進入解壓目錄并安裝:
cd vmware-tools-distrib sudo ./vmware-install.pl
-
按提示一路回車即可安裝完成
-
重啟虛擬機:
sudo reboot
方法二:使用開放版 open-vm-tools
(推薦)
很多新版本的 Linux 發行版已經內置開源版本的 VMware Tools,叫 open-vm-tools
,安裝更方便,兼容性也很好。
Ubuntu / Debian 系:
sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop -y
CentOS / RHEL / Oracle Linux 系:
sudo dnf install open-vm-tools -y
如果你在 GUI 桌面環境下運行,還建議安裝:
sudo dnf install open-vm-tools-desktop -y
Arch Linux:
sudo pacman -S open-vm-tools
📌 啟動服務:
sudo systemctl enable --now vmtoolsd
💡 推薦方案
場景 | 推薦方式 |
---|---|
使用現代 Linux(如 Ubuntu 20+/CentOS 8+/Oracle Linux 9) | ? 使用 open-vm-tools 更輕量簡單 |
使用較老系統或 GUI 安裝失敗 | ? 使用 VMware 自帶的工具包安裝(經典方法) |
📎 驗證安裝是否成功
vmware-toolbox-cmd -v # 查看版本
vmware-checkvm # 檢查是否在 VMware 中運行
或者你會發現:
- 鼠標不再卡頓
- 窗口隨意調整大小
- 可以拖動文件、復制粘貼
這里推薦使用dnf去安裝,為什么?如果采用傳統的方式安裝可能會報如下錯誤:
/tmp/vmware-tools-distrib/vmware-install.pl: /usr/bin/perl: bad interpreter: No such file or directory
者表示 系統里沒有安裝 Perl 解釋器,但 vmware-install.pl
是一個 Perl 腳本,必須依賴 Perl 來執行。
? 解決方法:
sudo yum install -y perl
?
yum
是 CentOS 7 的包管理器(CentOS 8 開始是dnf
)
安裝完成后,重新執行你之前的安裝命令:
sudo ./vmware-install.pl
就可以進入 VMware Tools 的安裝流程了。
💡 建議(更推薦用 open-vm-tools)
因為 VMware 自帶的 Tools 安裝比較老、更新麻煩,你也可以直接用開源版本:
sudo yum install -y open-vm-tools
sudo systemctl enable --now vmtoolsd
這個方式:
- 不需要掛載光盤或解壓;
- 能自動升級;
- 已被 VMware 官方推薦為默認方式。
配置靜態IP
你可能會用老方法配置靜態IP:
vim /etc/sysconfig/network-scripts/ifcfg-ens33(網卡名稱也可能是其他名稱)
然后發現/etc/sysconfig下沒有network-scripts。
從 RHEL 8 開始(包括 AlmaLinux、Rocky 8/9),官方就 淘汰了傳統的 network-scripts(ifcfg-xxx)配置方式,轉而使用:
NetworkManager + nmcli 或 nmtui 工具 + keyfile 配置
在 AlmaLinux 上,推薦使用 nmcli
或 ip
命令查看和管理網卡信息。
? 查看網卡信息(設備列表)
nmcli device
輸出示例:
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
lo loopback unmanaged --
? 查看連接配置(Connection 配置文件)
nmcli connection show
輸出示例:
NAME UUID TYPE DEVICE
ens160 a1b2c3d4-5678-90ab-cdef-1234567890ab ethernet ens160
? 查看某個網卡的詳細信息
nmcli device show ens160
或者:
nmcli connection show ens160
? 查看 IP 地址(不使用 nmcli)
ip addr
配置方法1:使用 nmcli(命令行配置網絡)
配置方法2:使用 nmtui(圖形化文本界面)
這里主要講方法1:
假設我要配置一個如下的網絡:
- 靜態 IP:
10.128.145.158
- 子網掩碼:
255.255.255.0
(即/24
) - 網關:
10.128.145.2
- DNS:
8.8.8.8
- 網卡連接名:你說用
nmcli connection show
查到是ens160
只需要執行以下命令:
nmcli connection modify ens160 \ipv4.addresses 10.128.145.158/24 \ipv4.gateway 10.128.145.2 \ipv4.dns 8.8.8.8 \ipv4.method manual \connection.autoconnect yesnmcli connection down ens160 && nmcli connection up ens160
🔍 命令說明:
命令部分 | 作用 |
---|---|
ipv4.addresses | 設置靜態 IP 和子網掩碼 |
ipv4.gateway | 設置默認網關 |
ipv4.dns | 設置 DNS |
ipv4.method manual | 使用手動配置(即關閉 DHCP) |
connection.autoconnect | 開機自動連接 |
down / up | 重啟網絡連接應用新配置 |
配置成功后你可以用以下命令確認:
ip addr show ens160
或:
nmcli device show ens160
還可以測試:
ping -c 3 8.8.8.8 # 測試網絡連通
ping -c 3 www.baidu.com # 測試 DNS 是否正常
配置之后就可以用MobaXterm之類的工具鏈接了!
安裝一些開發工具
我們可以看到mini版本內置了python3:
那我們就安裝一個docker,
首先,刷新 Alma 系統上的軟件包,確保您使用的是發行版倉庫中最新的軟件版本。如果有待處理的更新,請應用它們。
sudo dnf update
現在讓我們將官方 Docker 存儲庫添加到您的 AlmaLinux 10 系統,以便您可以直接從上游維護的 RPM 包安裝和更新 Docker。
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
運行以下命令在 AlmaLinux 10 上安裝最新的 Docker 版本。
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
這將安裝以下 Docker 組件:
- docker-ce:Docker 引擎本身。
- docker-ce-cli:一個命令行工具,可讓您與 Docker 守護進程對話。
- containerd.io:管理容器生命周期的容器運行時。
- docker-buildx-plugin:Docker 的這個擴展增強了構建鏡像的功能,主要側重于多平臺構建。
- docker-compose-plugin:一個配置管理插件,可幫助使用單個 YAML 文件管理多容器 Docker 應用程序。
按“ Y ”確認。接下來,系統會要求您接受 Docker 倉庫的 GPG 密鑰,以便將其導入到您的 Alma 系統中。再次按“ Y ”確認。
現在,您可以啟動 Docker 服務并將其配置為在系統啟動時自動啟動:
sudo systemctl enable --now docker
要確認 Docker 服務已啟用并啟動,請運行:
sudo systemctl status docker
我們來到了最激動人心的部分。讓我們通過運行一個名為“hello-world”的簡單容器化應用程序來測試我們新安裝的Docker是否正常工作。
sudo docker run hello-world
dnf和yum的區別
dnf
是 yum
的下一代版本管理器,主要用于 RPM 系 Linux 發行版(如 CentOS、RHEL、Fedora 等)。它們的作用一樣,都是用于安裝、更新、卸載軟件包,但 dnf
是 yum
的升級替代品,設計之初就是為了解決 yum
的一系列問題。
dnf
是yum
的“改進版”,具有更快的性能、更好的依賴處理、更強的插件機制和更現代的代碼架構。你應該用dnf
,因為它更穩定、未來可持續、替代了yum
。
🔍核心區別
特性 | yum (老) | dnf (新) |
---|---|---|
構建語言 | Python 2 | Python 3 + libsolv (C庫) |
依賴解析 | 自研邏輯,容易出錯 | 使用 libsolv ,依賴解析更快 |
插件機制 | 基于 Python 2 | 更現代、標準化插件架構 |
性能 | 較慢,資源開銷大 | 更快,占用內存更小 |
API 穩定性 | 不穩定 | 提供穩定 API 供第三方調用 |
鎖機制(事務沖突) | 無 | 有事務鎖,防止并發沖突 |
軟件包緩存機制 | 手動清理 | 更智能的緩存機制 |
為什么 Fedora/CentOS 選擇了 dnf?
? 現代化架構
yum
的代碼老舊且基于 Python 2,維護難度大。- Python 2 已淘汰,
dnf
使用 Python 3,便于持續維護。
? 更強的依賴解析
yum
依賴解析器很“笨”,復雜情況下可能報錯或死鎖。dnf
使用libsolv
(由 SUSE 維護的解析庫),速度快、準確性高。
? API 穩定
- 第三方工具可以穩定地集成
dnf
(如 Ansible、Cockpit 等)。
? 更智能的插件與緩存處理
dnf
的插件架構和緩存策略更好,比如自動清除緩存、插件隔離等。
💡 向下兼容性
-
在 CentOS/RHEL 8+ 中,執行
yum
命令其實就是調用了dnf
,只是為了兼容老腳本。$ which yum /usr/bin/yum -> /usr/bin/dnf
🧪 示例:使用感幾乎無差別
# 安裝軟件包
dnf install nginx
yum install nginx # 等價于上面(新系統中)# 升級所有包
dnf upgrade
yum update # 等價(但 `dnf upgrade` 語義更清晰)# 清除緩存
dnf clean all
yum clean all