Linux 中 RPM 命令的 20 个实用示例
RPM(Red Hat 软件包管理器)是基于Red Hat 的系统(如RHEL、CentOS和Fedora)的默认开源且最流行的软件包管理实用程序。该工具允许系统管理员和用户在Unix/Linux操作系统中安装、更新、卸载、查询、验证和管理系统软件包。RPM 以前称为.rpm文件,其中包含软件包所需的已编译软件程序和库。此实用程序仅适用于以.rpm格式构建的软件包。
本文提供了一些有用的20 个 RPM 命令示例,可能对您有所帮助。借助这些 rpm 命令,您可以设法在 Linux 系统中安装、更新、删除软件包。
关于 RPM(RedHat 软件包管理器)的一些事实
- RPM 是免费的,并根据GPL(通用公共许可证)发布。
- RPM 将所有已安装软件包的信息保存在/var/lib/rpm数据库下。
- RPM 是 Linux 系统下安装软件包的唯一方法,如果您使用源代码安装软件包,则 rpm 将无法管理它。
- RPM 处理.rpm文件,其中包含有关软件包的实际信息,例如:它是什么、它来自哪里、依赖项信息、版本信息等。
RPM命令有五种基本模式
- 安装:用于安装任何 RPM 包。
- 删除:用于擦除,移除或卸载任何 RPM 包。
- 升级:用于更新现有的RPM包。
- 验证:用于验证RPM包。
- 查询:用于查询任何RPM包。
在哪里可以找到 RPM 包
以下是 rpm 站点列表,您可以在其中查找和下载所有RPM包。
另请阅读:
请记住,在 Linux 中安装软件包时您必须是root用户,使用 root 权限您可以使用适当的选项管理 rpm 命令。
1.如何检查RPM签名包
在 Linux 系统上安装软件包之前,请务必检查其 PGP 签名,确保其完整性和来源没有问题。使用以下命令和–checksig(检查签名)选项来检查名为pidgin的软件包的签名。
[root@example]# rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK
2.如何安装RPM包
要安装 rpm 软件包,请使用以下命令和-i选项。例如,安装名为pidgin-2.7.9-5.el6.2.i686.rpm的 rpm 包。
[root@example]# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm Preparing... ########################################### [100%] 1:pidgin ########################################### [100%]
RPM 命令和选项
- -i:安装包
- -v:详细显示,效果更佳
- -h:在解压软件包档案时打印井号。
3. 如何在安装前检查 RPM 包的依赖关系
假设您想在安装或升级包之前进行依赖性检查。例如,使用以下命令检查BitTorrent-5.2.2-1-Python2.4.noarch.rpm包的依赖关系。它将显示包的依赖关系列表。
[root@example]# rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm /usr/bin/python2.4 python >= 2.3 python(abi) = 2.4 python-crypto >= 2.0 python-psyco python-twisted >= 2.0 python-zopeinterface rpmlib(CompressedFileNames) = 2.6
RPM 命令和选项
- -q:查询包
- -p:列出此包提供的功能。
- -R:列出此软件包所依赖的功能。
4.如何安装没有依赖项的 RPM 包
如果您知道所有需要的软件包都已安装,而 RPM 只是愚蠢而已,那么您可以在安装软件包之前使用选项–nodeps(不检查依赖关系)来忽略这些依赖关系。
[root@example]# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm Preparing... ########################################### [100%] 1:BitTorrent ########################################### [100%]
上述命令通过忽略依赖性错误强制安装 rpm 包,但如果缺少这些依赖文件,那么程序将根本无法工作,直到您安装它们。
5. 如何检查已安装的 RPM 包
使用带有包名称的-q选项将显示 rpm 是否安装。
[root@example]# rpm -q BitTorrent BitTorrent-5.2.2-1.noarch
6. 如何列出已安装 RPM 包的所有文件
要查看已安装的 rpm 包的所有文件,请使用rpm 命令的-ql(查询列表)。
[root@example]# rpm -ql BitTorrent /usr/bin/bittorrent /usr/bin/bittorrent-console /usr/bin/bittorrent-curses /usr/bin/bittorrent-tracker /usr/bin/changetracker-console /usr/bin/launchmany-console /usr/bin/launchmany-curses /usr/bin/maketorrent /usr/bin/maketorrent-console /usr/bin/torrentinfo-console
7.如何列出最近安装的 RPM 软件包
使用带有-qa(查询全部)选项的以下 rpm 命令将列出所有最近安装的 rpm 包。
[root@example]# rpm -qa --last BitTorrent-5.2.2-1.noarch Tue 04 Dec 2012 05:14:06 PM BDT pidgin-2.7.9-5.el6.2.i686 Tue 04 Dec 2012 05:13:51 PM BDT cyrus-sasl-devel-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:06 PM BDT cyrus-sasl-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:05 PM BDT cyrus-sasl-md5-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:04 PM BDT cyrus-sasl-plain-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:03 PM BDT
8.如何列出所有已安装的 RPM 包
键入以下命令来打印 Linux 系统上已安装的所有软件包的名称。
[root@example]# rpm -qa initscripts-9.03.31-2.el6.centos.i686 polkit-desktop-policy-0.96-2.el6_0.1.noarch thunderbird-17.0-1.el6.remi.i686
9.如何升级 RPM 包
如果我们想要升级任何 RPM 包,则将使用“ –U ”(升级)选项。使用此选项的主要优点之一是它不仅会升级任何包的最新版本,而且还会保留旧包的备份,以便在新升级的包无法运行时可以再次使用以前安装的包。
[root@example]# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm Preparing... ########################################### [100%] 1:nx ########################################### [100%]
10.如何删除 RPM 包
例如,要卸载 RPM 包,我们使用包名nx,而不是原始包名nx-3.5.0-2.el6.centos.i686.rpm。-e (擦除)选项用于删除包。
[root@example]# rpm -evv nx
11.如何删除没有依赖项的 RPM 包
–nodeps (不检查依赖项)选项强制从系统中删除 rpm 包。但请记住,删除特定包可能会破坏其他正在运行的应用程序。
[root@example]# rpm -ev --nodeps vsftpd
12. 如何查询文件属于哪个 RPM 包
假设您有文件列表,并且想要找出哪个软件包属于这些文件。例如,以下命令带有-qf(查询文件)选项,将显示文件/usr/bin/htpasswd属于软件包httpd-tools-2.2.15-15.el6.centos.1.i686。
[root@example]# rpm -qf /usr/bin/htpasswd httpd-tools-2.2.15-15.el6.centos.1.i686
13.如何查询已安装的RPM包信息
假设您安装了一个 rpm 包,并想了解该包的相关信息。以下-qi(查询信息)选项将打印已安装包的可用信息。
[root@example]# rpm -qi vsftpd Name : vsftpd Relocations: (not relocatable) Version : 2.2.2 Vendor: CentOS Release : 11.el6 Build Date: Fri 22 Jun 2012 01:54:24 PM BDT Install Date: Mon 17 Sep 2012 07:55:28 PM BDT Build Host: c6b8.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: vsftpd-2.2.2-11.el6.src.rpm Size : 351932 License: GPLv2 with exceptions Signature : RSA/SHA1, Mon 25 Jun 2012 04:07:34 AM BDT, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://vsftpd.beasts.org/ Summary : Very Secure Ftp Daemon Description : vsftpd is a Very Secure FTP daemon. It was written completely from scratch.
14.安装前获取RPM包的信息
您从网上下载了一个软件包,想在安装之前了解一下该软件包的信息。例如,以下选项-qip ( query info package ) 将打印软件包sqlbuddy的信息。
[root@example]# rpm -qip sqlbuddy-1.3.3-1.noarch.rpm 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软件包相关的手册页。
[root@example]# rpm -qdf /usr/bin/vmstat /usr/share/doc/procps-3.2.8/BUGS /usr/share/doc/procps-3.2.8/COPYING /usr/share/doc/procps-3.2.8/COPYING.LIB /usr/share/doc/procps-3.2.8/FAQ /usr/share/doc/procps-3.2.8/NEWS /usr/share/doc/procps-3.2.8/TODO
16.如何验证RPM包
验证软件包会将软件包中已安装文件的信息与 rpm 数据库进行比较。-Vp(验证软件包)用于验证软件包。
[root@example downloads]# rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm S.5....T. c /etc/httpd/conf.d/sqlbuddy.conf
17.如何验证所有RPM包
键入以下命令来验证所有已安装的 rpm 包。
[root@example]# 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 6 GPG 密钥。
[root@example]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
19.如何列出所有导入的 RPM GPG 密钥
要打印系统中所有导入的GPG密钥,请使用以下命令。
[root@example]# 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 数据库,并借助以下命令恢复它。
[root@example]# cd /var/lib [root@example]# rm __db* [root@example]# rpm --rebuilddb [root@example]# rpmdb_verify Packages