RPM (Red Hat Package Manager) 為 Linux 軟體分發標準格式,.rpm 檔案包含編譯好的二進制檔、配置檔、文件、相依關係、安裝/卸載腳本。核心資料庫位於 /var/lib/rpm/。
rpm -i package.rpm # 基礎安裝
rpm -iv package.rpm # 顯示安裝檔案清單
rpm -ivh package.rpm # 顯示進度條 (# 號)
# 進階參數
rpm -i --test package.rpm # 僅測試不安裝 (檢查相依)
rpm -i --replacepkgs package.rpm # 強制重裝
rpm -i --nodeps package.rpm # 忽略相依關係 (危險)
rpm -i --force package.rpm # 強制覆蓋檔案
# 已安裝套件查詢
rpm -qa # 列出所有已安裝
rpm -qa | grep kernel # 過濾關鍵字
rpm -qi package_name # 顯示套件詳細資訊
rpm -ql package_name # 列出套件安裝的所有檔案路徑
rpm -qc package_name # 僅列出配置檔
rpm -qd package_name # 僅列出文件檔
rpm -qf /etc/nginx/nginx.conf # 反查檔案屬於哪個套件
rpm -q --scripts package_name # 查看安裝/卸載腳本內容
rpm -q --changelog package_name # 變更日誌
# 未安裝 .rpm 檔案查詢 (加 -p)
rpm -qip package.rpm # 套件資訊
rpm -qlp package.rpm # 檔案清單
rpm -qpR package.rpm # 相依關係
rpm -e package_name # 正常卸載
rpm -e --nodeps package_name # 強制卸載 (忽略被相依)
rpm -e --test package_name # 測試卸載影響
rpm -Uvh package.rpm # 升級或安裝 (不存在則安裝)
rpm -Fvh package.rpm # 僅升級已安裝 (Freshen)
# 降級
rpm -Uvh --oldpackage old_version.rpm
rpm -V package_name # 驗證單一套件
rpm -Va # 驗證所有套件 (耗時)
rpm -Vf /etc/passwd # 驗證特定檔案所屬套件
輸出代碼含義 (8 字元):
| 位置 | 代碼 | 含義 |
|---|---|---|
| 1 | S | 檔案大小異動 |
| 2 | M | 模式/權限異動 |
| 3 | 5 | MD5 雜湊異動 (內容被修改) |
| 4 | D | 裝置主/次號異動 |
| 5 | L | 符號連結路徑異動 |
| 6 | U | 擁有者異動 |
| 7 | G | 群組異動 |
| 8 | T | 修改時間異動 |
| 首字元 | c | 配置檔 (config) |
| 首字元 | d | 文件檔 (doc) |
| 首字元 | g | 鬼檔 (ghost, 不在套件中但由腳本建立) |
| 首字元 | l | 授權檔 (license) |
| 首字元 | r | 讀我檔 (readme) |
範例:S.5....T c /etc/nginx/nginx.conf → 大小、MD5、時間被修改,屬配置檔 (預期行為)。
| 參數 | 作用 |
|---|---|
| --force | 強制操作 (覆蓋檔案、忽略衝突) |
| --nodeps | 忽略相依關係 |
| --requires | 顯示套件相依需求 |
| --provides | 顯示套件提供的能力 |
| --whatrequires | 反查哪個套件需要此能力 |
| --whatprovides | 反查哪個套件提供此能力 |
| --root /mnt/sysimage | 指定替代根目錄 (救援模式常用) |
| --dbpath /path | 指定替代 RPM 資料庫路徑 |
rpm -qa | grep tomcatrpm -ql httpdrpm -qf /usr/bin/phprpm -Va | grep -E '^..5' | head -20yumdownloader --resolve --destdir=/tmp/rpms httpddnf install/update/remove/info/list 對應 RPM 底層操作rpm -i --root 或 dnf --installroot