Linux中RPM命令的20個實用示例

RPMRed Hat Package Manager)是一款預設的開源且廣泛使用的套件管理工具,用於基於紅帽(Red Hat)的系統,如 CentOS、Fedora、Rocky 和 Alma Linux。

rpm 套件管理工具使系統管理員和用戶能夠在 Unix/Linux 操作系統上安裝、更新、卸載、查詢、驗證和管理軟件套件,這些套件以前被稱為.rpm文件,其中包含套件所需的編譯軟件程序和庫。

本文提供了 20 個有用的 RPM 命令示例,這些命令可能對您有所幫助。借助這些 RPM 命令,您可以在 Linux 系統上管理套件的安裝、更新和移除。

RPM 事實

以下是有關RPM紅帽套件管理器)的一些事實:

  • RPM 是免費提供的,並在通用公共許可證(GPL)下發布。
  • RPM 維護了所有已安裝套件的數據庫,將此信息存儲在/var/lib/rpm目錄中。
  • RPM 是在 Linux 系統上安裝套件的主要方法。如果使用源代碼安裝了套件,則 RPM 不會對其進行管理。
  • RPM 使用.rpm文件操作,其中包含重要的套件信息,如其身份、來源、依賴關係、版本詳細信息等。

RPM 命令的基本模式

以下是 RPM 命令的主要模式:

  • 安裝 – 使用 rpm -i 命令在系統上安裝新的套件。
  • 升級 – 使用 rpm -U 命令將現有套件升級到新版本。
  • 移除 – 使用 rpm -e 命令從系統中卸載或移除套件。
  • 查詢 – 使用 rpm -q 命令查詢 RPM 數據庫中關於已安裝套件的信息。
  • 驗證 – 使用 rpm -V 命令驗證已安裝套件文件的完整性。
  • 刷新 – 使用 rpm -F 命令僅在已安裝時才升級或安裝套件。
  • 重建數據庫 – 使用 rpm --rebuilddb 命令重建 RPM 數據庫,解決數據庫損壞問題。
  • 導入 GPG 金鑰 – 使用 rpm --import 命令導入用於套件簽名驗證的 GPG 金鑰。
  • 查詢全部 – 使用 rpm -qa 命令列出系統上所有已安裝的套件。
  • 查詢文件 – 使用 rpm -ql 命令列出特定套件安裝的所有文件。
  • 查詢文檔 – 使用 rpm -qd 命令列出套件提供的文檔文件。
  • 查詢依賴關係 – 使用 rpm -qR 命令列出套件的運行時依賴關係。
  • 查詢提供–使用rpm -q --provides命令列出套件提供的功能。
  • 查詢需求–使用rpm -q --requires命令列出套件所需的依賴性。

RPM套件的尋找地點

您可以在多個地方找到RPM套件,具體取決於您的Linux發行版。以下是您可以找到並下載所有RPM套件的常見位置。

請記住,在Linux中安裝包時,您必須是root用戶,擁有root權限,您可以使用適當的選項管理rpm命令。

1.如何檢查RPM包簽名

在將包安裝到您的Linux系統之前,始終檢查PGP簽名,並確保其完整性和來源是OK

使用以下命令與--checksig檢查簽名)選項來檢查名為hardinfo的包的簽名。

rpm --checksig hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm

hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm: digests OK

2.如何安裝RPM包

要安裝RPM軟件包,請使用以下命令與-ivh選項,這將在Linux系統上安裝名為hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm的rpm包。

rpm -ivh hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm

Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:hardinfo-2.0.11-1                ################################# [100%]

讓我們分解上述命令的組件:

  • -i :安裝一個包
  • -v :詳細顯示以獲得更好的顯示
  • -h:列印雜湊符號 (#)以顯示安裝進度。

3.如何在安裝前檢查 RPM套件的相依性

假設您希望在安裝或升級套件之前進行相依性檢查。例如,使用以下命令來檢查 hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm套件的相依性。

該命令查詢並顯示“hardinfo”套件所需的運行時相依性,這有助於在安裝套件之前識別並確保所有必要的相依性都得到滿足。

rpm -qpR hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm
 
libX11.so.6()(64bit)
libatk-1.0.so.0()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.33)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.38)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libcairo-gobject.so.2()(64bit)
libcairo.so.2()(64bit)
...

讓我們分解上述命令的組件:

  • -q :查詢一個套件。
  • -p :列出此套件提供的功能。
  • -R :列出此套件依賴的功能。

4.如何在不檢查相依性的情況下安裝 RPM套件

要在不檢查相依性的情況下安裝 rpm套件,您可以使用 --nodeps選項,這將強制安裝 RPM套件而不檢查或解決相依性。

rpm -ivh --nodeps hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm

上述命令通過忽略相依性錯誤強制安裝 rpm套件,但如果缺少這些相依性文件,則程序將完全無法運行,直到您安裝它們為止。

5.如何檢查已安裝的 RPM套件

要檢查已安裝的 rpm套件,您可以使用 -q選項,這將查詢並顯示有關已安裝版本的套件的信息。

rpm -q hardinfo

hardinfo-2.0.11-1.x86_64

6.如何找到 RPM文件安裝的位置

若要查看已安裝的rpm套件中的所有檔案,請使用帶有-ql查詢列表)的rpm命令。

rpm -ql hardinfo

/usr/bin/hardinfo2
/usr/lib/.build-id
/usr/lib/.build-id/3a
/usr/lib/.build-id/53
/usr/lib/.build-id/7c
/usr/lib/.build-id/ba
/usr/lib/.build-id/e0
/usr/lib64/hardinfo2
/usr/lib64/hardinfo2/modules
/usr/lib64/hardinfo2/modules/benchmark.so
/usr/lib64/hardinfo2/modules/computer.so
/usr/lib64/hardinfo2/modules/devices.so
/usr/lib64/hardinfo2/modules/network.so
...

7.如何列出最近安裝的RPM套件

使用以下帶有-qa查詢所有)選項的rpm命令,將列出所有最近安裝的rpm套件。

rpm -qa --last


hardinfo-2.0.11-1.x86_64                      Mon 04 Mar 2024 01:32:14 PM IST
pipewire-pulseaudio-1.0.3-1.fc39.x86_64       Mon 04 Mar 2024 01:32:02 PM IST
pipewire-jack-audio-connection-kit-1.0.3-1.fc39.x86_64 Mon 04 Mar 2024 01:32:02 PM IST
pipewire-alsa-1.0.3-1.fc39.x86_64             Mon 04 Mar 2024 01:32:02 PM IST
libsoup-devel-2.74.3-3.fc39.x86_64            Mon 04 Mar 2024 01:32:02 PM IST
json-glib-devel-1.8.0-1.fc39.x86_64           Mon 04 Mar 2024 01:32:02 PM IST
gtk3-devel-3.24.41-1.fc39.x86_64              Mon 04 Mar 2024 01:32:02 PM IST
xdg-desktop-portal-gtk-1.15.1-1.fc39.x86_64   Mon 04 Mar 2024 01:32:01 PM IST
xdg-desktop-portal-1.18.2-1.fc39.x86_64       Mon 04 Mar 2024 01:32:01 PM IST
libcanberra-gtk3-0.30-32.fc39.x86_64          Mon 04 Mar 2024 01:32:01 PM IST
gtk3-3.24.41-1.fc39.x86_64                    Mon 04 Mar 2024 01:32:01 PM IST
...

8.如何列出所有已安裝的RPM套件

輸入以下命令以列印您Linux系統上所有已安裝套件的名稱。

rpm -qa

fonts-filesystem-2.0.5-12.fc39.noarch
libreport-filesystem-2.17.11-3.fc39.noarch
hunspell-filesystem-1.7.2-5.fc39.x86_64
abattis-cantarell-vf-fonts-0.301-10.fc39.noarch
fedora-gpg-keys-39-1.noarch
fedora-repos-39-1.noarch
setup-2.14.4-1.fc39.noarch
filesystem-3.18-6.fc39.x86_64
basesystem-11-18.fc39.noarch
default-fonts-core-sans-4.0-9.fc39.noarch
langpacks-fonts-en-4.0-9.fc39.noarch
...

9.如何升級RPM套件

如果我們想要升級任何RPM套件,將使用“–U”(升級)選項。使用此選項的一個主要優點是,它不僅會升級任何套件的最新版本,而且還會維護舊套件的備份,以便如果較新的升級套件無法運行,則可以再次使用先前安裝的套件。

rpm -Uvh hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm

10.如何移除RPM套件

要解除安裝RPM套件,例如,我們使用套件名稱hardinfo,而不是原始套件名稱hardinfo-2.0.11-FedoraLinux-39.x86_64.rpm。使用-e (擦除)選項來移除套件。

rpm -evv hardinfo

11.如何不帶依賴性地移除RPM套件

使用--nodeps不檢查依賴性)選項強制從系統中移除rpm套件。但請記住,移除特定套件可能會破壞其他正在運行的應用程序。

rpm -ev --nodeps hardinfo

12.如何找到特定檔案的RPM套件

讓我們假設,您有一個文件列表,並且想找出這些文件屬於哪個套件。例如,以下命令與-qf查詢文件)選項將顯示一個文件/usr/bin/htpasswd,該文件由套件httpd-tools-2.4.58-1.fc39.x86_64所有。

rpm -qf /usr/bin/htpasswd

httpd-tools-2.4.58-1.fc39.x86_64

13. 查詢已安裝的RPM套件的信息

假設您已經安裝了一個rpm套件,並且想要了解有關該套件的信息。以下-qi查詢信息)選項將打印已安裝套件的可用信息。

rpm -qi hardinfo

Name        : hardinfo
Version     : 2.0.11
Release     : 1
Architecture: x86_64
Install Date: Mon 04 Mar 2024 01:32:14 PM IST
Group       : unknown
Size        : 5174404
License     : GPL2+
Signature   : (none)
Source RPM  : hardinfo-2.0.11-1.src.rpm
Build Date  : Sat 02 Mar 2024 06:37:42 AM IST
Build Host  : fedora.bigbear.dk
Relocations : /usr 
Vendor      : Humanity
URL         : https://www.hardinfo2.org
Summary     : hardinfo2 built using CMake
Description :
Hardinfo2 is a small application that displays information about your hardware and operating system.  It has online benchmarking to check your machine performance against other machines.

14. 在安裝之前獲取RPM套件的信息

您從互聯網上下載了一個套件,並且想在安裝之前瞭解該套件的信息。例如,以下選項-qip查詢信息套件)將打印一個套件sqlbuddy的信息。

rpm -qip sqlbuddy

Name        : sqlbuddy                     Relocations: (not relocatable)
Version     : 1.3.3                        Vendor: (none)
Release     : 1                            Build Date: Wed 02 Nov 2011 11:01:21 PM BDT
Install Date: (not installed)              Build Host: rpm.bar.baz
Group       : Applications/Internet        Source RPM: sqlbuddy-1.3.3-1.src.rpm
Size        : 1155804                      License: MIT
Signature   : (none)
Packager    : Erik M Jacobs
URL         : http://www.sqlbuddy.com/
Summary     : SQL Buddy â Web based MySQL administration
Description : SQLBuddy is a PHP script that allows for web-based MySQL administration.

15. 如何查詢已安裝的RPM套件的文檔

要獲取已安裝套件的可用文檔列表,請使用以下命令與選項-qdf查詢文檔文件)將顯示與vmstat套件相關的手冊頁。

rpm -qdf /usr/bin/vmstat

/usr/share/doc/procps-ng/AUTHORS
/usr/share/doc/procps-ng/FAQ
/usr/share/doc/procps-ng/NEWS
/usr/share/doc/procps-ng/README.md
/usr/share/doc/procps-ng/bugs.md
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/pgrep.1.gz
...

16. 如何驗證RPM套件

驗證一個套件是對比安裝檔案的資訊與 rpm 資料庫。 使用 -Vp (驗證套件) 來驗證一個套件。

rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm

S.5....T.  c /etc/httpd/conf.d/sqlbuddy.conf

17. 如何驗證所有 RPM 套件

輸入以下命令以驗證所有已安裝的 rpm 套件。

rpm -Va

S.5....T.  c /etc/rc.d/rc.local
.......T.  c /etc/dnsmasq.conf
.......T.    /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf
S.5....T.  c /etc/yum.conf
S.5....T.  c /etc/yum.repos.d/epel.repo

18. 如何導入 RPM GPG 金鑰

為了驗證 RHEL/CentOS/Fedora 套件,您必須導入 GPG 金鑰。 為此,執行以下命令。 它將導入 CentOS 8 GPG 金鑰。

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-8

19. 如何列出所有導入的 RPM GPG 金鑰

要列印系統中所有導入的 GPG 金鑰,使用以下命令。

rpm -qa gpg-pubkey*

gpg-pubkey-0608b895-4bd22942
gpg-pubkey-7fac5991-4615767f
gpg-pubkey-0f2672c8-4cd950ee
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-00f97f56-467e318a
gpg-pubkey-6b8d79e6-3f49313d
gpg-pubkey-849c449f-4cb9df30

20. 如何重建損壞的 RPM 資料庫

有時 rpm 資料庫會損壞並停止系統上的所有 rpm 和其他應用程式的功能。 因此,在這個時候,我們需要重建 rpm 資料庫並使用以下命令來恢復它。

cd /var/lib
rm __db*
rpm --rebuilddb
rpmdb_verify Packages

總之,提供的 rpm 命令為有效管理基於 RHEL 的 Linux 發行版 上的軟體套件提供了全面的指南。

Source:
https://www.tecmint.com/20-practical-examples-of-rpm-commands-in-linux/