网站搜索

Linux 中 RPM 命令的 20 个实用示例


RPM (Red Hat Package Manager) 是默认的开源和最流行的软件包管理实用程序,适用于基于 Red Hat 的系统,例如 (RHEL CentOSFedora)。该工具允许系统管理员和用户安装更新卸载查询验证Unix/Linux操作系统中的系统软件包。 RPM 以前称为.rpm 文件,其中包括已编译的软件程序和软件包所需的库。此实用程序仅适用于基于 .rpm 格式构建的软件包。

本文提供了一些有用的20 RPM 命令示例,可能对您有帮助。借助这些 rpm 命令,您可以在 Linux 系统中安装、更新、删除软件包。

关于 RPM(RedHat 包管理器)的一些事实

  1. RPM 是免费的,并根据GPL通用公共许可证)发布。
  2. RPM 将所有已安装软件包的信息保存在/var/lib/rpm数据库下。
  3. RPM 是 Linux 系统下安装软件包的唯一方法,如果您使用源代码安装了软件包,那么 rpm 将无法管理它。
  4. RPM 处理.rpm 文件,其中包含有关软件包的实际信息,例如:它是什么它来自哪里 >依赖信息版本信息等。

RPM命令有五种基本模式

  1. 安装:用于安装任何RPM包。
  2. 删除:用于删除、删除或卸载任何RPM包。
  3. 升级:用于更新现有的RPM包。
  4. Verify:用于验证RPM包。
  5. 查询:用于查询任意RPM包。

哪里可以找到 RPM 包

下面是 rpm 站点列表,您可以在其中找到并下载所有 RPM 软件包。

  1. http://rpmfind.net
  2. http://www.redhat.com
  3. http://freshrpms.net/
  4. http://rpm.pbone.net/

另请阅读:

  1. Linux 中的 20 个 YUM 命令示例
  2. Linux 中的 10 个 Wget 命令示例
  3. 对系统管理员来说最有用的 30 个 Linux 命令

请记住,在 Linux 中安装软件包时,您必须是 root 用户,拥有 root 权限后,您可以使用适当的选项来管理 rpm 命令。

1. 如何查看RPM签名包

在将软件包安装到 Linux 系统上之前,请务必检查其 PGP 签名,并确保其完整性和来源正常。使用以下带有 –checksig检查签名)选项的命令来检查名为 pidgin 的包的签名。

[root@tecmint]# 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@tecmint]# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm

Preparing...                ########################################### [100%]
   1:pidgin                 ########################################### [100%]
RPM 命令和选项
  1. -i :安装软件包
  2. -v :详细以便更好地显示
  3. -h:在解压包存档时打印哈希标记。

3. 安装前如何检查RPM包的依赖关系

假设您想在安装或升级包之前进行依赖性检查。例如,使用以下命令检查BitTorrent-5.2.2-1-Python2.4.noarch.rpm包的依赖关系。它将显示包的依赖项列表。

[root@tecmint]# 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 命令和选项
  1. -q :查询包
  2. -p :列出此包提供的功能。
  3. -R:列出该包所依赖的功能。

4. 如何安装没有依赖的RPM包

如果您知道所有需要的软件包都已安装,而 RPM 只是愚蠢的,那么您可以在安装之前使用选项 –nodeps不检查依赖项)来忽略这些依赖项包裹。

[root@tecmint]# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm

Preparing...                ########################################### [100%]
   1:BitTorrent             ########################################### [100%]

上面的命令通过忽略依赖项错误来强制安装 rpm 包,但是如果这些依赖项文件丢失,那么程序将根本无法运行,直到您安装它们。

5. 如何检查已安装的RPM包

使用 -q 选项和软件包名称,将显示是否安装了 rpm。

[root@tecmint]# rpm -q BitTorrent

BitTorrent-5.2.2-1.noarch

6. 如何列出已安装的RPM包的所有文件

要查看已安装的 rpm 软件包的所有文件,请在 rpm 命令中使用-ql查询列表)。

[root@tecmint]# 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@tecmint]# 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@tecmint]# 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@tecmint]# 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@tecmint]# rpm -evv nx

11. 如何删除没有依赖项的 RPM 包

–nodeps不检查依赖项)选项会强制从系统中删除 rpm 包。但请记住,删除特定的软件包可能会破坏其他正在运行的应用程序。

[root@tecmint]# rpm -ev --nodeps vsftpd

12. 如何查询某个文件属于哪个RPM包

假设您有文件列表,并且您想找出哪些包属于这些文件。例如,以下带有 -qf查询文件)选项的命令将显示文件 /usr/bin/htpasswd 属于程序包httpd-tools-2.2.15-15.el6.centos.1.i686

[root@tecmint]# rpm -qf /usr/bin/htpasswd

httpd-tools-2.2.15-15.el6.centos.1.i686

13. 如何查询已安装的RPM包信息

假设您安装了一个 rpm 软件包,并且想了解该软件包的信息。下面的-qi查询信息)选项将打印已安装软件包的可用信息。

[root@tecmint]# 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查询信息包)将打印包sqlbuddy的信息。

[root@tecmint]# 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@tecmint]# 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@tecmint downloads]# rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm

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

17. 如何验证所有 RPM 包

键入以下命令来验证所有已安装的 rpm 软件包。

[root@tecmint]# 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@tecmint]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

19. 如何列出所有导入的 RPM GPG 密钥

要打印系统中所有导入的 GPG 密钥,请使用以下命令。

[root@tecmint]# 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@tecmint]# cd /var/lib
[root@tecmint]# rm __db*
[root@tecmint]# rpm --rebuilddb
[root@tecmint]# rpmdb_verify Packages