RPM(Red Hat Package Manager)是默认的开源且广泛使用的软件包管理实用工具,适用于基于 Red Hat 的系统,如 CentOS、Fedora、Rocky 和 Alma Linux。
RPM 软件包管理工具使系统管理员和用户能够在 Unix/Linux 操作系统上安装、更新、卸载、查询、验证和管理软件包,它们以前被称为 .rpm
文件,其中包含软件程序和软件包所需的编译软件库。
本文提供了 20 个有用的 RPM 命令示例,可能对您有所帮助。借助这些 RPM 命令,您可以在 Linux 系统上管理软件包的安装、更新和移除。
RPM 事实
以下是有关RPM(Red Hat Package Manager)的一些事实:
- 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/