Linux 中 RPM 命令的 20 个实用示例
RPM (Red Hat Package Manager) 是默认的开源和最流行的软件包管理实用程序,适用于基于 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包。
- Verify:用于验证RPM包。
- 查询:用于查询任意RPM包。
哪里可以找到 RPM 包
下面是 rpm 站点列表,您可以在其中找到并下载所有 RPM 软件包。
- http://rpmfind.net
- http://www.redhat.com
- http://freshrpms.net/
- http://rpm.pbone.net/
另请阅读:
- Linux 中的 20 个 YUM 命令示例
- Linux 中的 10 个 Wget 命令示例
- 对系统管理员来说最有用的 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 命令和选项
- -i :安装软件包
- -v :详细以便更好地显示
- -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 命令和选项
- -q :查询包
- -p :列出此包提供的功能。
- -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