一、RPM介绍
1. RPM含义
RPM的全称是:Red Hat Package Manager,是RPM软件包管理器。在Linux系统中对应命令是rpm,我们看到名称中含有Red Hat,也就说明主要是在Red Hat发行版中使用的,除此之外还包括和Red Hat最亲近的CentOS,以及其他一些主流发行版:SuSE、Fedora等。
2. RPM特点
- rpm也是一种打包格式,使用rpm工具来进行管理
- rpm包是预先已经编译并打包的文件,安装较为方便
- 存在rpm相关的数据库,记录各软件间的依赖关系
- 如果缺少相关依赖,则无法正常安装或无法正常运行
- 如果逐一寻找依赖,在寻找过程中可能还有依赖关系,将会变成噩梦
- 可以用yum工具解决rpm依赖问题,在后续文章中介绍
3. 软件包名称
![](https://ask.qcloudimg.com/http-save/yehe-6086367/m9y7gcp7mk.jpeg?imageView2/2/w/1620)
- vim:软件名称部分
- enhanced:软件组件部分
- 7:主版本号
- 4:次版本号
- 629:修订号
- 5:发布次数
- el6_10.2:平台名称,表示适用于哪种发行版
- x86_64:系统位数,i386等表示适用于32位,x86_64表示适用于64位,noarch表示通用
二、常用命令
1. 查询
在进行软件查询时,适用rpm工具只能查询到以rpm软件包形式安装的软件信息,解压和编译安装的软件无法查询到信息。
- q:query的简写
(1)查询已安装的软件信息
- rpm -q 准确软件名称:查询某一个已安装软件
![](https://ask.qcloudimg.com/http-save/yehe-6086367/xah0ew77ub.jpeg?imageView2/2/w/1620)
- rpm -qa:显示已安装的所有软件列表
![](https://ask.qcloudimg.com/http-save/yehe-6086367/f4cl03jstd.jpeg?imageView2/2/w/1620)
- rpm -qi 准确软件名称:查询指定安装软件的详细信息
![](https://ask.qcloudimg.com/http-save/yehe-6086367/8xrg7vxwe0.jpeg?imageView2/2/w/1620)
- rpm -ql 准确软件名称:查看指定的软件包在系统中对应的目录和文件列表
![](https://ask.qcloudimg.com/http-save/yehe-6086367/plesxf53ni.jpeg?imageView2/2/w/1620)
- rpm -qf 目录或文件夹:查看当前指定的文件或目录对应的软件包
![](https://ask.qcloudimg.com/http-save/yehe-6086367/div36r3qo9.jpeg?imageView2/2/w/1620)
- 不确定具体名称时可以使用管道和筛选功能:rpm -qa|grep vim
![](https://ask.qcloudimg.com/http-save/yehe-6086367/0kflmknu9e.jpeg?imageView2/2/w/1620)
- 统计已安装的软件包总数:rpm -qa|wc -l
![](https://ask.qcloudimg.com/http-save/yehe-6086367/5u4w0ixp0v.jpeg?imageView2/2/w/1620)
(2)查询未安装的软件信息该操作主要是在软件包安装之前进行详细信息的查询,所以传入的参数是一个存在的软件包的路径。
- rpm -qpi 软件包完整路径:查询待安装软件的详细信息
![](https://ask.qcloudimg.com/http-save/yehe-6086367/5yfdxfwhmh.jpeg?imageView2/2/w/1620)
- rpm -qpl 软件包完整路径:查询待安装软件的安装路径
![](https://ask.qcloudimg.com/http-save/yehe-6086367/t4tuo3ifkq.jpeg?imageView2/2/w/1620)
2. 验证
使用-V可以验证软件包的正确性。
- V:verify的简写
(1)常用命令
- rpm -V 准确软件名称:只有校验失败时才会出现信息
- rpm -Va:扫描验证所有软件包(推荐使用root用户,不会出现权限问题),列出产生变更的项目、欠佳的依赖关系、缺失的关键配置文件等
![](https://ask.qcloudimg.com/http-save/yehe-6086367/7n1yiwgqq2.jpeg?imageView2/2/w/1620)
(2)信息标识
校验信息的后半部分显示对应的目录或文件,前半部分用大写字母表示产生变动的项目。
- S:大小改变
- M:权限改变
- 5:MD5改变
- L:链接改变
- D:设备改变
- U:属主改变
- G:数组改变
- T:修改时间改变
3. 卸载
软件包的卸载需要使用root用户来执行,必须完整提供卸载软件包的名称,可以先通过筛选查询获取。
- e:erase的简写(擦除)
在进行卸载操作时,可能有其他软件依赖于此软件,卸载后可能会导致其他软件不可用,如果存在依赖关系,则会显示依赖信息,如果执意要删除,可以使用忽略依赖的选项:--nodeps。
- rpm -e [--nodeps] 准确软件名称:卸载一个已安装软件,忽略依赖为可选项
rpm -e --nodeps vim-enhanced
4. 安装
软件包的安装需要使用root用户来执行,安装前一般会先查询已安装的相关软件,并卸载与之冲突的软件。
- i:install的简写
在进行软件安装时,可能系统当中缺少某个依赖,导致无法正常安装,可以使用--force选项进行强制安装,但无法保证安装后能够正常使用。常规的解决办法是先安装需要的依赖软件包,再安装该软件,或者使用yum工具。
- rpm -i [--force] 软件包完整路径:安装一个软件,强制安装为可选项
- rpm -ivh 软件包完整路径:常用命令,安装一个软件,显示详细信息和进度(用#表示)
5. 升级
与安装类似,使用root用户操作来操作,升级某一软件。
- U:update的简写
- F:freshen的简写
由于在升级时,旧版本的软件可能已经安装,也可能从未安装,针对这种情况,提供了两个参数。
- U表示:如果对应的软件包原来未安装,则直接安装,和i的效果相同
- F表示:如果对应的软件包原来未安装,则放弃安装
- rpm -U/F 软件包完整路径:升级一个软件
6. 维护
(1)RPM数据库维护如果本机的RPM数据库损坏,可能会导致无法正确的读取依赖关系,致使无法正常执行rpm相关功能,此时可以使用--initdb选项。
rpm --initdb
(2)签名验证当下载了一个软件后,如果我们无法确保它的来源,以及是否被篡改,则需要使用相应的GPG文件。一般在光盘镜像、网络镜像中都可以找到该文件,使用--import命令导入,在安装软件时会自动生效。
rpm --import /mnt/cdrom/RPM-GPG-KEY-CentOS-6
本文分享自微信公众号 - 微光点亮星辰(SandTower),作者:沙塔的哲学
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2020-02-22
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。