大学生勇闯Linux之RPM与YUM学习笔记
文章目录
前言
在 CentOS、RHEL、Fedora 等红帽系 Linux 发行版中,RPM 和 YUM 是最核心的软件包管理工具。二者是「底层工具」与「上层封装」的关系,共同解决了 Linux 系统中软件的安装、卸载、升级与依赖管理问题。
提示:以下是本篇文章正文内容,下面案例可供参考
一、RPM:底层软件包管理工具
1.1 什么是 RPM
RPM 全称 Red Hat Package Manager,是红帽公司推出的软件包管理标准,对应 .rpm 格式的安装包。它直接操作系统中的软件包,是 Linux 软件管理的底层工具。
核心特点:
- 安装速度快,操作直接针对本地包文件
- 无法自动解决软件依赖关系,需手动补齐所有依赖包
- 适合单个本地 RPM 包的安装、精细查询与卸载
1.2 RPM 核心命令速查
安装软件
rpm -ivh 软件包文件名.rpm
-i:install,执行安装-v:verbose,显示详细安装过程-h:hash,以井号显示安装进度条
查询软件
# 查看系统中所有已安装的软件包
rpm -qa
# 检查某个软件是否已安装
rpm -q 软件名
# 查看已安装软件的详细信息(版本、发布时间、描述等)
rpm -qi 软件名
# 查看该软件安装到了系统的哪些目录、生成了哪些文件
rpm -ql 软件名
# 反向查询:某个文件/命令属于哪个已安装的软件包
rpm -qf 文件绝对路径
运行示例如下:
升级软件
rpm -Uvh 软件包文件名.rpm
-U:升级模式;若系统中未安装该软件,则直接执行安装-i:安装-v:安装的时候显示安装的详细信息-h:显示安装的进度条
运行示例如下:
卸载软件
rpm -e 软件名
注意:若有其他软件依赖当前包,卸载会直接报错。需先卸载上层依赖项,不建议使用强制参数忽略依赖卸载系统核心包,极易导致系统崩溃
rpm -e --nodeps 软件名 #强制删除rpm包
注意:不建议这样做,可能会影响其他正常运行的程序
1.3 RPM 的核心局限性
RPM 最大的痛点是依赖地狱:安装一个业务软件时,往往需要先安装它依赖的多个系统库,每个依赖库可能又有次级依赖,纯手动逐个安装极其繁琐。YUM 正是为解决这个问题而诞生的上层工具。
二、YUM:自动化依赖管理工具
2.1 什么是 YUM
YUM 全称 Yellowdog Updater Modified,是基于 RPM 的前端包管理器。它在 RPM 的基础上增加了「软件仓库(Repository)」和「自动依赖解析」两大核心能力。
工作原理:
- 官方或第三方将大量 RPM 包和完整的依赖关系信息,整理存放在网络软件仓库中
- YUM 读取仓库的元数据,自动计算安装目标软件所需的全部依赖包
- 一次性自动下载并安装所有依赖与主程序,全程无需人工干预
2.2 YUM 核心命令速查
安装软件
# 安装指定软件,-y 表示全程自动确认,无需手动输入 y
yum install -y 软件名
# 安装本地 RPM 包,并自动从网络仓库解决其依赖(高频实用命令)
yum localinstall -y 本地包文件名.rpm
运行示例如下:
卸载软件
yum remove 软件名
升级软件
# 升级单个指定软件
yum update -y 软件名
# 升级系统中所有可升级的软件包(谨慎用于生产环境)
yum update -y
查询与搜索
# 按关键词搜索仓库中可用的软件包
yum search 关键词
# 查看指定软件的详细信息(版本、大小、功能描述)
yum info 软件名
# 列出仓库中所有可安装、已安装的软件包
yum list
# 反向查询:某个命令/文件属于哪个软件包(未安装也可查询)
yum provides 命令名/文件路径
仓库与缓存管理
# 查看当前系统已启用的所有 YUM 仓库
yum repolist
# 清理本地缓存的旧安装包与过期元数据
yum clean all
# 重新生成仓库元数据缓存,提升后续安装速度
yum makecache
包组批量管理
YUM 支持按「包组」批量安装一类功能软件,比如开发工具集、桌面环境等。
# 查看所有可用的软件包组
yum grouplist
# 安装整个包组,例如「开发工具」组
yum groupinstall -y "Development Tools"
2.3 YUM 配置说明
- 仓库配置文件存放目录:
/etc/yum.repos.d/ - 合法的仓库配置文件必须以
.repo作为后缀 - 日常更换国内镜像源(阿里云、清华源等),本质就是修改该目录下的仓库配置文件
三、RPM 与 YUM 核心对比
| 对比维度 | RPM | YUM |
|---|---|---|
| 工具定位 | 底层包管理工具 | 基于 RPM 的上层包管理器 |
| 依赖处理 | 无法自动解决,需手动逐个处理 | 自动解析并安装全部依赖包 |
| 安装包来源 | 本地 .rpm 文件 |
网络软件仓库(repo) |
| 使用复杂度 | 高,需自行处理依赖链 | 低,一条命令完成全流程 |
| 适用场景 | 单个本地包安装、精细文件查询 | 在线安装、批量管理、依赖复杂的软件 |
| 层级关系 | 底层执行工具 | 底层仍调用 RPM 完成包的安装操作 |
四、高频实战场景与易错点
4.1 快速判断软件是否安装
两种常用方式,按需选择:
# 方式1:rpm 精确查询系统已安装包
rpm -q nginx
# 方式2:yum 同时查询已安装包 + 仓库可用包
yum list nginx
4.2 查找命令所属的软件包
比如不知道 ifconfig 命令来自哪个安装包:
# 方式1:rpm 反向查询(仅支持已安装的命令)
rpm -qf /usr/sbin/ifconfig
# 方式2:yum 反向查询(未安装也可从仓库中检索)
yum provides ifconfig
4.3 常见易错点
- 卸载命令不要加文件后缀:卸载用
rpm -e nginx,只需写软件名,不要写成完整的 rpm 文件名。 - 禁止随意强制卸载系统包:
--nodeps参数会忽略依赖强制卸载,用于系统核心包极易导致环境崩溃。 - 记不清包名先搜索:安装前用
yum search检索准确包名,避免输错导致安装失败。 - 换源后刷新缓存:修改仓库配置后,必须执行
yum clean all && yum makecache让配置立即生效。
五、总结
RPM 是 Linux 软件管理的基础,负责单个包的安装、查询与卸载,是理解包管理原理的核心;YUM 在 RPM 之上封装了仓库机制与自动依赖解决能力,是日常运维和实验操作的主力工具。理解二者的层级关系,掌握高频命令与适用场景,是 Linux 系统管理入门的必备技能。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)