1. 概述
什么是rpm包?
- rpm包是linux中的一种可执行程序,你只要使用命令
rpm -ivh执行文件后缀为.rpm的程序,就可以安装这个rpm包。
rpm有哪些功能?
rpm即Red-Hat Package Manager(RPM软件包管理器),它作为一种软件包的同时,也是一个管理软件包的管理器,有以下的功能:
- 安装、卸载、升级和管理软件
- 组件查询
- 验证软件包来源合法性
- 软件包GPG和MD5数字签名的导入、验证和发布
- 解决软件包依赖关系
- 重建数据库
- 网络远程安装
rpm软件包管理器的职责
- 将二进制程序,库文件,配置文件,帮助文件打包成一个文件
- 安装软件需将而二进制文件,库文件,配置文件,帮助文件放到相应的位置
- 安装数据库,追踪所安装的每一个文件
- 软件卸载时根据安装时生成的数据库将对应的文件删除
rpm软件包由什么组成?
- 程序组成清单(每个包独有)
- 文件清单
- 安装或卸载时运行的脚本
- 数据库(公共)
- 程序包名称及版本
- 依赖关系
- 功能说明
- 安装生成文件的文件路径及校验码信息
2. 软件包命名规范
一般软件包命名格式为:

包的组成:
- 主包:name-9.7.1-1.el5.i586.rpm
- 子包:name-libs-9.7.1-1.el5.i586.rpm name-utils-9.7.1-1.el5.i586.rpm
包名格式:
- name-major.minor.release-release.arch.rpm
格式说明:
- major(主版本号):重大改进
- minor(次版本号):某个子功能发生重大变化
- release(发行号):修正了部分bug,调整了一点功能
- arch(硬件平台):
- x86:i386、i486、i586
- x86_64:x64、x86_64、amd64
- 跟平台无关:noarch
3. rpm包管理
3.1 rpm包安装
语法:rpm -ivh /PATH/TO/PACKAGE_FILE ...
常用选项:
-i 安装
-v 显示详细信息
-h 显示安装进度条
--force 强行安装,可以实现重装或降级
--test 测试安装,不是真的进行安装
--nodeps 忽略依赖关系
--replacepkgs 重新安装,替换原有的安装
--oldpackage 降级
--nodigest 不检查包的完整性
--nosignature 不检查包的来源合法性
--noscripts 不执行程序包脚本片段
%pre:安装前的脚本 --nopre
%post:安装后的脚本 --nopost
%preun:卸载前的脚本 --nopreun
%postun:卸载后的脚本 --nopostun
示例:
- 测试一个软件包是否能在该系统上安装
[root@node1 ~]# rpm -ivh --test vsftpd-3.0.3-28.el8.x86_64.rpm
- 强制安装一个软件包
[root@node1 ~]# rpm -ivh --force vsftpd-3.0.3-28.el8.x86_64.rpm
3.2 rpm包查询
语法:rpm OPTION PACKAGE_NAME ...
常用的选项:
-q 查询指定的包是否安装
-qa 查询已经安装的所有包
-qi 查询指定包的说明信息
-ql 查询指定软件包安装后生成的文件列表
-qf 查询指定文件是由哪个rpm包安装生成的
-qc 查询指定指定包安装的配置文件
-qd 查询指定包安装的帮助文件
-q --scripts 查询指定包中包含的脚本
-q --whatprovides 查询指定的功能是由哪个包提供的,如rpm -q --whatprovides /bin/cat
-q --whatrequires 查询指定的功能被哪个包所依赖
-q --changelog 查询指定命令的制作日志
-q --provides 查询指定软件包所提供的功能
-qR 查询指定的软件包所依赖的功能
-qpi 查询指定未安装的包的说明信息
-qpl 查询未安装的软件包安装后会产生哪些文件
示例:
- 查询vsftpd这个rpm包是否安装
[root@node1 ~]# rpm -q vsftpd
package vsftpd is not installed
- 查找系统中已经安装的包中是否有ftp
[root@node1 ~]# rpm -qa |grep ftp
- 查询vsftpd软件包的说明信息
[root@node1 ~]# rpm -qi vsftpd
- 查询未安装的软件包会产生哪些文件
[root@node1 ~]# rpm -qpl vsftpd-3.0.3-28.el8.x86_64.rpm
warning: vsftpd-3.0.3-28.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
......
3.3 rpm包升级
语法:rpm {-Uvh,-Fvh} /PATH/TO/PACKAGE_FILE ...
-Uvh 如果装有老版本则升级,否则安装
-Fvh 如果装有老版本则升级,否则退出
[root@node1 ~]# rpm -Uvh vsftpd-3.0.3-28.el8.x86_64.rpm
注意事项:
- 不要对内核做升级,Linux支持多内核版本并存,可以直接安装新版本内核
- 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
3.4 rpm包卸载
语法:rpm -e PACKAGE_NAME
[root@node1 ~]# rpm -e vsftpd
注意事项:
- 如果其他包依赖于要卸载的包,这个被依赖的包是无法卸载的,除非强制卸载,强制卸载后依赖于这个包的其他程序将无法正常工作
3.5 rpm包校验
语法:rpm -V PACKAGENAME
没有提示信息,说明包没有被修改
提示信息具体内容:
- S 文件的容量大小被改变
- M 文件的类型或文件的属性被修改
- 5 MD5加密的内容已经不同
- D 装置的主/次代码已经改变
- L 路径已经被修改
- U 文件的所属主已被修改
- G 文件的所属组已被修改
- T 文件的创建时间已被修改
3.6 rpm数据库重建
rpm有一个强大的数据库/var/lib/rpm,数据库中包含程序包名称及版本、依赖关系、功能说明、安装生成文件的文件路径及校验码信息
重建数据库:
- rpm --rebuilddb 重建数据库,一定会重新建立
- rpm --initdb 初始化数据库,没有才建立,有的话不会建立
本文详细介绍了RPM软件包管理,包括其功能、命名规范和管理操作如安装、查询、升级、卸载和校验。同时强调了RPM数据库的重要性以及注意事项,如升级时配置文件的处理和依赖关系管理。
598

被折叠的 条评论
为什么被折叠?



