rpm命令使用

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

常见参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
用法: rpm [选项...]
-a:查询所有已经安装的软件包;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合"-l"参数使用;
-d:只列出文本文件,本参数需配合"-l"参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询文件所属于的软件包;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的软件包;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:是查询一个包是否安装;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。

如何安装rpm软件包

1
2
3
4

$ rpm -ivh your-package
# 忽略报错,强制安装
$ rpm --force -ivh your-package.rpm

查询软件包位置及卸载rpm软件包

1
2
3
4
5
6
7
8
9
# 查询tree安装在哪
$ rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
# 卸载
$ rpm -e tree

列出所有安装过的包

1
$ rpm -qa

获取某个安装包全名

1
2
3
4
$ rpm -q tree
tree-1.6.0-10.el7.x86_64
# tree 1 6 10 el7 x86 64
# 软件名   主版本号   次版本号   修订号     RHEL7    CPU架构平台  支持系统位数

查询软件包的安装信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ rpm -qi tree
Name : tree
Version : 1.6.0
Release : 10.el7
Architecture: x86_64
Install Date: Wed 03 Jul 2019 05:14:23 PM CST
Group : Applications/File
Size : 89505
License : GPLv2+
Signature : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : tree-1.6.0-10.el7.src.rpm
Build Date : Tue 10 Jun 2014 03:28:53 AM CST
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://mama.indstate.edu/users/ice/tree/
Summary : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format. Tree is basically a UNIX port of the DOS tree
utility.

查看哪个软件包含这个程序

1
2
3
$ rpm -qf <span class="built_in">which</span> 程序名    #返回软件包的全名
$ rpm -qif <span class="built_in">which</span> 程序名 #返回软件包的有关信息
$ rpm -qlf <span class="built_in">which</span> 程序名 #返回软件包的文件列表

查询ssh的软件包全名

1
2
$ rpm -qf <span class="built_in">which</span> sshd
openssh-server-6.6.1p1-35.el7_3.x86_64