RPM (RPM Package Manager) 是紅帽系 Linux 的核心套件管理工具,雖然高層工具 YUM/DNF 更常用,但掌握 RPM 底層操作對於離線安裝、套件驗證、資料庫修復、自訂套件打包等場景至關重要。本文系統整理 RPM 核心指令、選項組合、實戰場景。
RPM 封裝包含:二進制程式、設定檔、說明文件、函式庫、標頭檔、相依資訊、安裝/移除腳本。

| 指令 | 用途 | 常用組合 |
|---|---|---|
rpm -ivh pkg.rpm | 安裝 (詳細進度條) | 標準安裝 |
rpm -Uvh pkg.rpm | 升級/安裝 (有舊版則升級,無則安裝) | 通用部署 |
rpm -Fvh pkg.rpm | 僅升級 (無舊版則跳過) | 修補更新 |
rpm -ivh --nodeps pkg.rpm | 忽略相依關係強制安裝 | 測試/離線環境 |
rpm -ivh --test pkg.rpm | 模擬安裝 (不實際寫入) | 預檢相依 |
rpm -ivh --replacepkgs pkg.rpm | 重新安裝同版本 (修復檔案遺失) | 修復損壞 |
rpm -ivh --force pkg.rpm | 強制安裝 (覆蓋檔案、忽略相依、降級) | 極端修復 |
rpm -e pkg_name # 正常移除
rpm -e --nodeps pkg_name # 忽略相依強制移除
rpm -e --test pkg_name # 模擬移除
| 指令 | 功能 |
|---|---|
rpm -qa | 列出所有已安裝套件 |
rpm -q pkg_name | 確認套件是否安裝 |
rpm -qi pkg_name | 顯示套件詳細資訊 |
rpm -ql pkg_name | 列出套件安裝的所有檔案 |
rpm -qc pkg_name | 列出設定檔 |
rpm -qd pkg_name | 列出說明文件 |
rpm -qf /path/to/file | 查詢檔案屬於哪個套件 |
rpm -qp pkg.rpm | 查詢未安裝 .rpm 檔案資訊 |
rpm -qR pkg_name | 查詢套件相依需求 |
rpm -q --scripts pkg_name | 查看安裝/移除腳本內容 |
# 匯入廠商公鑰 (一次性)
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
# 驗證單一套件簽章與完整性
rpm -K pkg.rpm
# 或
rpm --checksig pkg.rpm
# 驗證已安裝套件檔案完整性
rpm -V pkg_name
# 輸出代碼: S=大小異常 M=模式異常 5=MD5異常 D=裝置異常 L=符號連結異常 U=擁有者異常 G=群組異常 T=時間異常 P=能力異常


# 重建資料庫索引 (損壞修復)
rpm --rebuilddb
# 初始化資料庫 (極端情況)
rpm --initdb
# 1. 線上環境下載套件及所有相依
yumdownloader --resolve pkg_name
# 2. 複製所有 .rpm 到離線機器
# 3. 批次安裝
rpm -Uvh *.rpm
rpm -qf $(which nginx)
# 或未安裝時
yum provides */nginx
rpm -Va 2>/dev/null | grep -E '^.{9} /(etc|bin|sbin|usr/bin|usr/sbin)/'
# 目錄結構
~/rpmbuild/
├── BUILD/
├── RPMS/
├── SOURCES/ # 原始碼 tarball
├── SPECS/ # .spec 檔案
├── SRPMS/
# 編譯
rpmbuild -ba ~/rpmbuild/SPECS/mypkg.spec
| 場景 | 推薦工具 |
|---|---|
| 日常安裝/更新/移除 (有網路) | YUM/DNF |
| 離線安裝單一 .rpm | RPM |
| 查詢檔案歸屬/套件內容 | RPM |
| 驗證套件簽章/檔案完整性 | RPM |
| 資料庫修復/重建 | RPM |
| 自訂套件打包 | RPM (rpmbuild) |
上一頁 1 2 3 下一頁 共 3 頁