Linux命令之rpm
rpm是一个包管理器,用于生成、安装、查询、核实、更新以及卸载单个软件包。一个包通常包括一个文件存档以及元数据,用于安装和删除存档文件。元数据包括助手脚本、文件属性和包的描述信息。
必选选择以下基本模式之一:查询,验证,安装/升级/刷新/重新安装,卸载,设置所属主/所属组,显示查询标签和显示配置。
查询和验证包:
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
安装/升级/卸载包:
rpm {-i|--install} [install-options] PACKAGE_FILE …
rpm {-U|--upgrade} [install-options] PACKAGE_FILE …
rpm {-F|--freshen} [install-options] PACKAGE_FILE …
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME …
杂项:
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME …
(1).软件包的类型
rpm二进制包,已经使用gcc编译。
tar源码包,需要编译。
1)rpm包的获取方式:
1.光盘或系统镜像
2.网站rpmfind.net
3.部分软件可以去它的官网下载,如mysql、nginx等
2)rpm包格式说明:
zsh -5 .0 .2 -28 .el7 .x86_64.rpm
软件名-主版本号.次版本号.修订-发布.操作系统版本.软件包位数
说明:修订表示第几次修改bug。发布表好似第几次发布。发布可能只对软件安装的默认参数做了修改而没有其他改动。
3)rpm使用时,什么情况下用全名,什么情况下用软件名?
在安装和更新时使用全名。对已经安装过的软件包进行操作时使用软件名,比如查找已经安装的某个包或卸载包。
注意:当一个rpm包安装到系统上,安装信息通常会保存在本地的/var/lib/rpm/目录下
4)rpm在安装完成后,相关文件会复制到不同的目录下,一般默认分布如下(具体由打包人员设置):
/etc 存放配置文件
/bin/sbin 一些可执行文件
/lib /lib64 一些库文件
/usr/include 一些头文件
/usr/share/doc 使用手册帮助文件
/usr/share/man man手册
(2).常用选项
1)前置模式选择选项
|
1
2
3
4
5
6
|
-q,--query 查询指定格式的包信息。-V,--verify 验证将比较包中已安装文件的信息与从存储在rpm数据库中的包的元数据中获取的文件信息。-i,--install 安装一个新软件包。-U,--upgrade 升级或安装较新的软件包。与install类似,但会删除其他所有版本。-F,--freshen 仅升级,必须存在早期版本的软件包。-e,--erase 卸载 |
2)一般选项
|
1
2
|
-v 打印详细信息,通常会显示常规进度消息。--version 打印包含正在使用的rpm版本号的单行 |
3)包选择选项(select-options)
|
1
2
3
|
-a,--all 指定所有文件-f,--file FILE 指定文件所属的包-p,--package PACKAGE_FILE 指定未安装的包文件,可以是ftp或http的URL。 |
4)包查询选项(query-options)
|
1
2
3
|
-i,--info 显示包的名称、版本和说明。如果指定了--queryformat ,则使用它。-l,--list 列出包内所有文件-R,--requires 列出包的依赖信息(关联软件包) |
5)安装选项(install-options)
|
1
2
|
-h,--hash 打开包存档时打印50个散列标记(#),与-v或--verbose一起使用可以获得更好的显示效果--prefix=<dir> 把软件包安装到指定目录下 |
(3).实例
1)从本地安装软件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@xuexi ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY准备中... ################################# [100%]正在升级/安装... 1:zsh-5.0.2-28.el7 ################################# [100%][root@xuexi ~]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh/bin/zsh |
2)从网上下载直接安装CentOS epel扩展yum源
注:epel源是对CentOS7系统中自带的base源的扩展。针对有依赖关系的包安装,建议直接使用yum安装。
|
1
2
3
4
5
6
|
[root@xuexi ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm获取http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm警告:/var/tmp/rpm-tmp.Wl3pdy: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY准备中... ################################# [100%]正在升级/安装... 1:epel-release-7-11 ################################# [100%] |
3)查询指定包是否安装
|
1
2
3
4
|
[root@xuexi ~]# rpm -q zshzsh-5.0.2-28.el7.x86_64[root@xuexi ~]# rpm -qa zshzsh-5.0.2-28.el7.x86_64 |
4)查看所有已安装包
|
1
2
3
4
5
6
|
[root@xuexi ~]# rpm -qa[root@xuexi ~]# rpm -qa | grep vim //查询所有已安装包中带vim关键字的包vim-filesystem-7.4.160-5.el7.x86_64vim-enhanced-7.4.160-5.el7.x86_64vim-minimal-7.4.160-5.el7.x86_64vim-common-7.4.160-5.el7.x86_64 |
5)查询文件或命令属于哪个安装包
|
1
2
3
4
5
6
|
[root@xuexi ~]# rpm -qf /usr/binfilesystem-3.2-25.el7.x86_64[root@xuexi ~]# which find //查看find命令的路径/usr/bin/find[root@xuexi ~]# rpm -qf /usr/bin/findfindutils-4.5.11-6.el7.x86_64 |
6)查询包的详细信息或作用
注意:没有安装才使用-p选项
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
[root@xuexi ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm //没有安装警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEYName : php-mysqlVersion : 5.4.16Release : 45.el7Architecture: x86_64Install Date: (not installed)Group : Development/LanguagesSize : 237547License : PHPSignature : RSA/SHA256, 2018年04月25日 星期三 19时36分39秒, Key ID 24c6a8a7f4a80eb5Source RPM : php-5.4.16-45.el7.src.rpmBuild Date : 2018年04月13日 星期五 03时12分53秒Build Host : x86-01.bsys.centos.orgRelocations : (not relocatable)Packager : CentOS BuildSystem <http://bugs.centos.org>Vendor : CentOSURL : http://www.php.net/Summary : A module for PHP applications that use MySQL databasesDescription :The php-mysql package contains a dynamic shared object that will addMySQL database support to PHP. MySQL is an object-relational databasemanagement system. PHP is an HTML-embeddable scripting language. Ifyou need MySQL support for PHP applications, you will need to installthis package and the php package.[root@xuexi /]# rpm -qi zsh //已经安装Name : zshVersion : 5.0.2Release : 28.el7Architecture: x86_64Install Date: 2019年01月10日 星期四 13时12分01秒Group : System Environment/ShellsSize : 5855982License : MITSignature : RSA/SHA256, 2017年08月11日 星期五 04时28分17秒, Key ID 24c6a8a7f4a80eb5Source RPM : zsh-5.0.2-28.el7.src.rpmBuild Date : 2017年08月02日 星期三 18时52分37秒Build Host : c1bm.rdu2.centos.orgRelocations : (not relocatable)Packager : CentOS BuildSystem <http://bugs.centos.org>Vendor : CentOSURL : http://zsh.sourceforge.net/Summary : Powerful interactive shellDescription :The zsh shell is a command interpreter usable as an interactive loginshell and as a shell script command processor. Zsh resembles the kshshell (the Korn shell), but includes many enhancements. Zsh supportscommand line editing, built-in spelling correction, programmablecommand completion, shell functions (with autoloading), a historymechanism, and more. |
7)查询包生成或将会生成的文件
|
1
2
3
4
5
6
7
8
9
|
[root@xuexi /]# rpm -ql zsh //已安装[root@xuexi /]# rpm -qpl /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm //未安装警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY/etc/php.d/mysql.ini/etc/php.d/mysqli.ini/etc/php.d/pdo_mysql.ini/usr/lib64/php/modules/mysql.so/usr/lib64/php/modules/mysqli.so/usr/lib64/php/modules/pdo_mysql.so |
8)验证软件包内容是否被修改,实际应用于验证命令有没有被黑客修改
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@xuexi ~]# rpm -Va //验证所有包[root@xuexi ~]# which find/usr/bin/find[root@xuexi ~]# rpm -qf /usr/bin/findfindutils-4.5.11-6.el7.x86_64[root@xuexi ~]# rpm -Vf /usr/bin/find[root@xuexi ~]# echo aaa >> /usr/bin/find[root@xuexi ~]# rpm -Vf /usr/bin/find //通过文件检查S.5....T. /usr/bin/find[root@xuexi ~]# rpm -V findutils //通过包检查S.5....T. /usr/bin/find |
注:如果出现的全是点,表示测试通过。出现下面的字符代表某项测试失败:
|
1
2
3
4
5
6
7
8
9
|
5 MD5校验和是否改变,也看成文件内容是否改变S 文件长度,大小是否改变L 符号链接,文件路径是否改变T 文件修改日期是否改变D 设备U 用户G 用户组M 模式? 不可读文件 |
后面c文件名,表示的是文件类型
|
1
2
3
4
5
|
c 配置文件d 普通文件g 不该出现的文件,意思是包不含这个文件l 授权文件(licase file)r 描述文件 |
注意:验证时参考了/var/lib/rpm目录下的rpm数据库信息。
9)卸载
|
1
|
[root@xuexi ~]# rpm -e zsh |
注意:--nodeps忽略依赖,但不建议在卸载时使用rpm去卸载有依赖关系的包,应该用yum。
10)不存在就安装,存在就升级
|
1
2
3
4
5
|
[root@xuexi ~]# rpm -Uvh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY准备中... ################################# [100%]正在升级/安装... 1:zsh-5.0.2-28.el7 ################################# [100%] |
(4).扩展
srpm源码包(.src.rpm),私人定制rpm。安装rpmbuild --rebuild XXX.arc.rpm。很少使用,用兴趣可以了解下。

浙公网安备 33010602011771号