下面将分别对上述RPM管理功能中的常见操作进行学习。
2.查询RPM软件包信息
使用rpm命令的查询功能可以查看某个软件包是否已经安装,软件包的用途以及软件包复制系统中的文件等相关信息,以便更好地管理Linux操作系统中的应用程序。
rpm命令的查询功能主要通过 "-q" 选项实现,主要针对当前系统中已经安装的软件包;道 "-qp" 选项可以针对尚未安装的RPM软件包文件进行查询。根据所需查询的具体项目不同,还可为这两个选项指定相关的子选项。
1)查询已安装的RPM软件包信息
不带子选项的 "-q" 选项可用于查询已知名称的软件包是否已经安装,需要使用准确的软件作为参数(可以有多个)。结合不同的子选项使用时,可以实现更具体的查询。常用的几个子选下所述。
-qa:显示当前系统中以RPM方式安装的所有软件列表。
-qi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息(--info)。
-ql:显示指定的软件包在当前系统中安装的所有目录、文件列表(--list)。
-qf:查看指定的文件或目录是由哪个软件包所安装的(--file)。
直接执行 "rpm -qa" 命令将列出当前操作系统中以RPM方式安装的所有软件包清单,每录一个软件包的名称、版本等信息。结合管道操作和 "wc -l" 命令,可以统计出系统中已安装的RPM软件的个数。
[root@localhost ~]# rpm -qa
geocode-glib-3.14.0-2.e17.x86 64
libfontenc-1.1.2-3.e17.x86 64
libpurple-2.10.7-26.e17.x86 64
gom-0.2.1-3.e17.x86 64
selinux-policy-targeted-3.13.1-102.e17.noarch
……//省略部分内容
当需要查询某个软件包是否已经安装时,可以直接使用软件包名称作为查询参数。例如,执行以下的 "rpm -q elinks lynx" 操作可以查询是否已安装elinks和lynx软件包(这两个软件包都是文本模式下的网页浏览器工具)。
[root@localhost ~]# rpm -q elinks lynx
package elinks is not installed
package lynx is not installed
如果不知道准确的软件包名称,还可以对全部查询结果进行过滤,使用软件包的一部分名称进行模糊查询,根据查询结果再进行判断,例如,执行以下操作可以查询系统中是否安装了名称中含 "samba" 的软件包,查询时不区分大小写。
[root@lcoalhost ~]# rpm -qa | grep -i samba
samba-client-4.4.4-9.el7.x86_64
samba-common-libs-4.4.4-9.el7.x86_64
samba-libs-4.4.4-9.el7.x86_64
samba-common-4.4.4-9.el7.noarch
samba-client-libs-4.4.4-9.el7.x86_64
对于系统中已经安装的各种软件程序,如果不知道其中某个软件的用途,同样可以通过rpm工具进行查询。例如samba-client 软件,可以执行 "rpm -qi samba-client" 命令来了解samba-client软件包的摘要信息,具体操作如下:
[root@lcoalhost ~]# rpm -qi samba-client
Name : samba-client
Epoch : 0
Version : 4.4.4
Release : 9.el7
Architecture: x86_64
Install Date: 2020年09月09日 星期三 17时57分22秒
Group : Applications/System
Size : 1826831
License : GPLv3+ and LGPLv3+
Signature : RSA/SHA256, 2016年11月21日 星期一 04时38分35秒, Key ID 24c6a8a7f4a80eb5
Source RPM : samba-4.4.4-9.el7.src.rpm
Build Date : 2016年11月07日 星期一 18时31分03秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.samba.org/
Summary : Samba client programs
Description :
The samba-client package provides some SMB/CIFS clients to complement
the built-in SMB/CIFS filesystem in Linux. These clients allow access
of SMB/CIFS shares and printing to SMB/CIFS printers.
当需要查看某个软件包安装的目录和文件清单时,可以使用"-q1"选项。例如,执行 "rpm-ql
wget"命令可以列出wget软件包安装的目录和文件清单,具体操作如下:
[root@lcoalhost ~]# rpm -ql wget
/etc/wgetrc
/usr/bin/wget
/usr/share/doc/wget-1.14
/usr/share/doc/wget-1.14/AUTHORS
/usr/share/doc/wget-1.14/COPYING
/usr/share/doc/wget-1.14/MAILING-LIST
/usr/share/doc/wget-1.14/NEWS
/usr/share/doc/wget-1.14/README
/usr/share/doc/wget-1.14/sample.wgetrc
/usr/share/info/wget.info.gz
/usr/share/locale/be/LC_MESSAGES/wget.mo
……//省略部分内容
当需要知道系统中的某个文件是由哪一个软件包生成的时候,可以使用 " -qf " 选项。例如行以下操作可以获知vim编辑器程序是在安装vim-enhanced软件包时生成的。
[root@localhost ~]# which vim //先找出vim程序位置,以便进行下一步的查询
/usr/bin/vim
[root@lcoalhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7.x86_64
使用rpm命令只能查询通过RPM方式安装的软件包信息,对通过其他途径安装(如源码编译、手动复制等方式)到系统中的软件包,rpm命令则无法获取相关信息。
2)查询RPM软件包文件中的相关信息
使用 "-qp" 选项时,必须以RPM软件包文件的路径作为参数(可以有多个),而不是软件包称。其相关的子选项与使用 "-q" 查询时类似,常用的两个查询选项如下所述。
-qpi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息。
-qpl:查看该软件包准备要安装的所有目标目录、文件列表。
下面看几个操作示例。例如,已知CentOS光盘目录中有一个RPM软件包文etrtiool-4,5-3,el7. 864.pmn若要在安装之前了解该软件的用途,可以执行以下操作。
[root@lcoalhost ~]# umount /dev/cdrom
[root@lcoalhost ~]# mount /dev/cdrom /media
mount: /dev/sr0 写保护,将以只读方式挂载
[root@lcoalhost ~]# mkdir /pack
[root@lcoalhost ~]# cp -rf /media/Packages/ /pack/
[root@lcoalhost ~]# cd /pack/Packages/
[root@lcoalhost Packages]# rpm -qpi ethtool-4.5-3.el7.x86_64.rpm
警告:ethtool-4.5-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
Name : ethtool
Epoch : 2
Version : 4.5
Release : 3.el7
Architecture: x86_64
Install Date: (not installed)
Group : Applications/System
Size : 344591
License : GPLv2
Signature : RSA/SHA256, 2016年11月21日 星期一 01时36分38秒, Key ID 24c6a8a7f4a80eb5
Source RPM : ethtool-4.5-3.el7.src.rpm
Build Date : 2016年11月06日 星期日 10时05分23秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://ftp.kernel.org/pub/software/network/ethtool/
Summary : Settings tool for Ethernet NICs
Description :
This utility allows querying and changing settings such as speed,
port, auto-negotiation, PCI locations and checksum offload on many
network devices, especially of Ethernet devices.
若希望进一步了解该软件包中包含哪些文件(安装后将复制到系统中),可以执行以下操作。
[root@lcoalhost Packages]# rpm -qpl ethtool-4.5-3.el7.x86_64.rpm
警告:ethtool-4.5-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
/usr/sbin/ethtool
/usr/share/doc/ethtool-4.5
/usr/share/doc/ethtool-4.5/AUTHORS
/usr/share/doc/ethtool-4.5/COPYING
/usr/share/doc/ethtool-4.5/ChangeLog
/usr/share/doc/ethtool-4.5/LICENSE
/usr/share/doc/ethtool-4.5/NEWS
/usr/share/doc/ethtool-4.5/README
/usr/share/man/man8/ethtool.8.gz