在 Red Hat、Fedora、CentOS、openSUSE 等發行版中,RPM 是底層套件格式與管理器,YUM(Yellowdog Updater, Modified)則是建立在 RPM 之上的高階前端工具。兩者關係緊密但分工明確,本文從原理、指令、依賴處理、資源庫管理四維度深度對比,並附實戰速查表。

| 維度 | RPM | YUM |
|---|---|---|
| 定位 | 底層套件管理器/格式 | 高階前端管理工具(Shell 介面) |
| 依賴解析 | 手動、極其繁瑣 | 自動從資源庫下載並解決所有相依 |
| 資源庫支援 | 無(僅操作本地 .rpm 檔) | 支援多軟體源(repo),自動同步中繼資料 |
| 安裝來源 | 本地 .rpm 檔或 URL | 配置的 repo 伺服器 |
| 資料庫一致性 | 直接操作 RPMDB | 操作後同步更新 RPMDB,保持一致 |
| 適用場景 | 離線安裝、單一套件測試、打包開發 | 日常維運、批次更新、自動化部署 |
rpm -ivh pkg.rpm # 安裝(-v 顯示進度 -h hash 標記) rpm -Uvh pkg.rpm # 升級(不存在則安裝) rpm -e pkg_name # 移除(不需 .rpm 副檔名)
rpm -q pkg_name # 查詢是否安裝 rpm -qi pkg_name # 詳細資訊(版本、建置日期、描述) rpm -ql pkg_name # 列出套件安裝的所有檔案 rpm -qf /path/to/file # 反查檔案屬於哪個套件 rpm -Va # 驗證所有套件完整性(找出遺失/被竄改檔案)
--test:模擬安裝/升級/移除,不實際寫入--nodeps:強制忽略依賴(慎用)--relocate:重新定位安裝路徑(僅支援可重定位套件)yum repolist # 列出已啟用軟體源 yum check-update # 檢查可升級套件 yum update # 升級所有可升級套件(含核心) yum update kernel # 僅升級指定套件 yum upgrade # 大版本升級(含淘汰套件處理)
yum install pkg_name # 自動解決依賴並安裝 yum install @group_name # 安裝套件群組(如 "Development Tools") yum remove pkg_name # 移除套件及無用依賴 yum autoremove # 清理孤兒依賴
yum search keyword # 搜尋套件名/描述含關鍵字 yum info pkg_name # 顯示詳細資訊 yum list installed # 列出已安裝套件 yum provides */filename # 反查檔案屬於哪個套件(極實用) yum clean all # 清理快取釋放空間 yum makecache # 重建快取
# 每日自動檢查更新(需啟用 yum-cron 服務) systemctl enable --now yum-cron
/etc/yum.repos.d/*.repo 關鍵欄位[base] name=CentOS-$releasever - Base baseurl=https://mirror.centos.org/centos/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum-plugin-priorities):數值越小優先級越高,避免第三方源覆蓋核心套件| 場景 | 推薦工具 | 指令範例 |
|---|---|---|
| 離線環境安裝單一 .rpm | RPM | rpm -ivh nginx-1.20.rpm |
| 線上環境安裝 Nginx 及依賴 | YUM | yum install nginx |
| 查詢 /etc/nginx/nginx.conf 屬於哪包 | RPM | rpm -qf /etc/nginx/nginx.conf |
| 搜尋所有含 php 的可用套件 | YUM | yum search php |
| 驗證系統檔案完整性 | RPM | rpm -Va |
| 批次更新生產伺服器 | YUM | yum update -y |
RPM 是地基,YUM 是摩天大樓。日常運維 95% 場景用 YUM,只在離線、打包、深度除錯時回頭用 RPM。熟練雙工具切換,才是 Red Hat 系系統管理員的基本功。