Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows 綜合教學 >> 系統指令

RPM 指令完整指南:Linux 軟體包安裝、升級、查詢、驗證與資料庫管理

編輯:系統指令

RPM (RPM Package Manager) 是 Red Hat 系列發行版 (RHEL、CentOS、Fedora、openSUSE、Rocky、AlmaLinux) 的核心軟體包管理工具,掌握其安裝、升級、移除、查詢、驗證、簽名檢查與資料庫維護指令,是 Linux 系統管理的基本功。

核心操作速查表

操作指令常用參數組合
安裝rpm -i / --install-ivh (詳細+進度條)、--test (試運行)、--nodeps (忽略依賴)、--force (強制覆蓋)
升級rpm -U / --upgrade-Uvh、--oldpackage (降級)、--test
移除rpm -e / --erase-v、--nodeps、--test
查詢已安裝rpm -q / --query-qa (全部)、-qi pkg (資訊)、-ql pkg (檔案列表)、-qc pkg (設定檔)、-qd pkg (文件)、-qf /path/file (反查屬於哪包)
查詢未安裝包檔rpm -qp / --query --package-qip pkg.rpm (資訊)、-qlp pkg.rpm (檔案列表)、-qscrp pkg.rpm (腳本)
驗證已安裝包rpm -V / --verify-Va (全部)、-Vf /path/file、--nodeps、--nofiles
檢查包簽名/完整性rpm -K / --checksig-K pkg.rpm、--nopgp
資料庫維護--rebuilddb、--initdb修復損毀、建立新資料庫

詳細參數說明

安裝/升級共用參數

  • -h / --hash:顯示 # 進度條。
  • --percent:百分比進度 (適合腳本解析)。
  • --excludedocs / --includedocs:排除/包含文件檔。
  • --replacepkgs:強制重裝已安裝包。
  • --replacefiles:替換屬於其他包的檔案。
  • --force:等同 --replacepkgs --replacefiles。
  • --noscripts:不執行 %pre/%post/%preun/%postun 腳本。
  • --prefix 路徑:重新導向安裝路徑 (需包支援)。
  • --ignorearch / --ignoreos:忽略架構/作業系統檢查。
  • --nodeps:極度危險,忽略所有依賴關係,可能破壞系統一致性。
  • --ftpproxy / --ftpport:FTP 代理/埠設定 (舊版支援)。

查詢資訊選項 (-q 專用)

  • -i:摘要資訊 (名稱、版本、釋出、架構、安裝日期、大小、授權、建構主機、供應商、描述)。
  • -l:檔案清單。
  • -c:設定檔清單 (標記為 %config)。
  • -d:文件檔清單 (%doc)。
  • -s:檔案狀態 (normal, not installed, replaced 等)。
  • --scripts:顯示安裝/移除/驗證腳本內容。
  • --queryformat / --qf "格式字串":自訂輸出格式 (如 "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n")。
  • --dump:每檔案完整驗證資訊 (md5, mtime, size, mode, owner, group 等)。
  • --provides:包提供的能力 (虛擬包、庫 soname 等)。
  • --requires / -R:包需要的能力。

驗證輸出代碼 (-V)

S.M.D.G.U.L.T.C  (8 字元)
S: 大小異常  M: 模式/權限異常  D: 裝置主/次號異常
G: 群組異常  U: 擁有者異常  L: 符號連結異常
T: 時間異常  C: 能力/設定檔異常  .: 正常

實戰範例

1. 完整安裝流程

# 下載
wget https://repo.example.com/pkg-1.0-1.x86_64.rpm

# 檢查簽名
rpm -K pkg-1.0-1.x86_64.rpm

# 試運行
rpm -i --test pkg-1.0-1.x86_64.rpm

# 正式安裝
rpm -ivh pkg-1.0-1.x86_64.rpm

2. 查詢與審計

# 所有已安裝包
rpm -qa | sort

# 查詢 httpd 詳細資訊
rpm -qi httpd

# 列出 httpd 安裝的所有檔案
rpm -ql httpd

# 找出 /etc/httpd/conf/httpd.conf 屬於哪個包
rpm -qf /etc/httpd/conf/httpd.conf

# 列出所有設定檔
rpm -qc httpd

3. 驗證系統完整性 (資安稽核)

# 驗證所有包
rpm -Va > /var/log/rpm_verify_$(date +%F).log

# 過濾異常項目
rpm -Va | grep -v "^........  "/

4. 移除與降級

# 移除
rpm -e pkg-name

# 降級 (需指定舊版 rpm 檔)
rpm -Uvh --oldpackage pkg-0.9-1.x86_64.rpm

5. 自訂查詢格式 (腳本友善)

rpm -qa --qf "%{NAME}\t%{VERSION}-%{RELEASE}\t%{ARCH}\t%{INSTALLTIME:date}\t%{SIZE}\n" | column -t

進階主題

RPM 宏與建構環境

  • ~/.rpmmacros、/etc/rpm/macros.* 定義建構路徑、簽名金鑰、壓縮演算法等。
  • rpmbuild -ba SPEC檔 從原始碼建構 RPM。
  • rpmspec -q SPEC檔 解析 SPEC 檔相依性。

YUM/DNF 前端對比

最佳實務

  1. 日常管理優先用 DNF/YUM,RPM 用於單包檢查、離線安裝、腳本、建構。
  2. 生產環境嚴禁常態使用 --nodeps/--force,必須在變更管理流程中評估風險。
  3. 定期 rpm -Va 稽核關鍵系統檔案完整性,納入資安基準。
  4. 保留 /var/log/rpmpkgs* (舊版) 或 dnf history 記錄,支援審計與回滾。
  5. 簽名驗證:匯入官方 GPG 金鑰 (rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*),啟用 gpgcheck=1。

RPM 是 Linux 軟體生命週期的基石。精通其查詢、驗證、資料庫維護與腳本整合能力,能讓系統管理員在從最小容器到大規模叢集的各種環境中,精準掌控軟體狀態、確保供應鏈安全與合規合規。

Copyright © Windows教程網 All Rights Reserved
特性RPM (底層)YUM/DNF (前端)
依賴解析手動/--nodeps自動下載並解決
倉庫管理無支援多倉庫、優先權、模組
交易歷程無dnf history 回滾
適用場景單包操作、腳本、離線、建構日常管理、系統更新、自動化