🐧 Linux 软件包管理完全指南:从 RPM 到 YUM
📅 发布时间:2026-07-28
🏷️ 标签:LinuxRPMYUM软件包管理CentOS运维
💡 适用系统:RHEL / CentOS 7 / Rocky / AlmaLinux 等 RPM 系发行版
📋 目录
- 一、软件包管理概述
- 二、RPM 包深度解析
- 2.1 RPM 包文件名格式
- 2.2 RPM 包的组成
- 2.3 RPM 包安装与更新原则
- 三、rpm 命令实战
- 3.1 查询操作(重点)
- 3.2 验证操作
- 3.3 安装与卸载
- 3.4 提取 RPM 包中的文件
- 四、YUM 包管理器
- 4.1 YUM 常用命令
- 4.2 软件包组管理
- 4.3 YUM 历史记录
- 五、总结
一、软件包管理概述
在 Windows 中,我们习惯通过控制面板 → 程序和功能来管理软件,或者直接从官网下载.exe安装包。而在 Linux 世界中,软件包管理同样至关重要。
Linux 两大包管理体系
| 体系 | 发行版 | 包格式 | 管理工具 |
|---|---|---|---|
| RPM 系 | RHEL、CentOS、Fedora、Rocky | .rpm | rpm、yum、dnf |
| DEB 系 | Debian、Ubuntu、Kali | .deb | dpkg、apt |
📌本文聚焦 RPM 系,以 CentOS 7 为主要实践环境。
二、RPM 包深度解析
2.1 RPM 包文件名格式
RPM 软件包文件名遵循严格的命名规范:
name-version-release.architecture.rpm示例:lrzsz-0.12.20-36.el7.x86_64.rpm
| 字段 | 含义 | 示例 |
|---|---|---|
name | 软件名称 | lrzsz |
version | 原始软件版本号 | 0.12.20 |
release | 发行版号(由打包商设置) | 36.el7 |
architecture | 处理器架构 | x86_64 |
常见架构标识:
noarch:不限制架构(如纯脚本、文档包)x86_64:64 位 x86 架构aarch64:ARM 64 位架构
2.2 RPM 包的组成
每个 RPM 包包含三个核心部分:
- 待安装的文件:二进制、配置文件、文档等
- 元数据信息:名称、版本、依赖关系、许可证、变更日志
- 脚本:安装、更新、卸载时自动执行的脚本
🔐数字签名:软件提供商使用 GPG 私钥对 RPM 包签名,客户端用公钥验证,确保包未被篡改。
2.3 RPM 包安装与更新原则
- 版本原则:同一软件通常只能装一个版本,kernel 是例外(可装多个,方便回滚)
- 升级策略:直接安装最新版即可,无需逐步升级
- 配置保留:升级 RPM 包时,配置文件通常会被保留
三、rpm 命令实战
rpm是底层包管理工具,不自动解决依赖,适合查询和验证。
3.1 查询操作(重点)
# 查询系统中所有已安装的包rpm-qa# 查询某个包是否已安装rpm-qhttpd# 查询已安装包的详细信息rpm-qcoreutils-i# 查询已安装包包含哪些文件rpm-qopenssh-server-l# 查询已安装包包含哪些配置文件rpm-qopenssh-server-c# 查询已安装包包含哪些文档rpm-qopenssh-server-d# 查询某个文件属于哪个包rpm-qf/etc/ssh/sshd_config# 查询已安装包的安装/卸载脚本rpm-qopenssh-server--scripts# 查询未安装的 rpm 包文件信息rpm-qphttpd-2.4.6.x86_64.rpm-c3.2 验证操作
# 验证已安装包的完整性rpm-Vopenssh-server验证结果解读:
S= 文件大小改变M= 模式/权限改变5= MD5 校验值改变T= 文件修改时间改变c= 配置文件
# 示例:修改 sshd 配置后验证sed-i's/PermitRootLogin yes/PermitRootLogin no/g'/etc/ssh/sshd_configrpm-Vopenssh-server# 输出:S.5....T. c /etc/ssh/sshd_config3.3 安装与卸载
# 安装 rpm 包rpm-ilrzsz-0.12.20-36.el7.x86_64.rpm# 友好安装(显示进度条)rpm-ivhlrzsz-0.12.20-36.el7.x86_64.rpm# 卸载rpm-elrzsz# 友好卸载rpm-evhlrzsz# 重新安装rpm--reinstall-vhlrzsz⚠️注意:
rpm -i不会自动解决依赖!如果缺少依赖包,会报错。这正是 YUM 存在的意义。
3.4 提取 RPM 包中的文件
有时我们只想提取 RPM 中的某个文件,而不想完整安装:
# 一步提取所有文件rpm2cpio httpd-2.4.6.x86_64.rpm|cpio-id'*'# 提取特定文件rpm2cpio httpd-2.4.6.x86_64.rpm|cpio-id./etc/httpd/conf/httpd.conf四、YUM 包管理器
YUM(Yellowdog Updater Modified)是 RPM 系的高级包管理工具,核心优势:
- ✅自动解决依赖
- ✅从远程仓库下载
- ✅支持软件包组管理
4.1 YUM 常用命令
# 查看命令帮助yumhelp# 查看仓库中软件包信息yum info httpd# 列出软件包(支持通配符)yum list'http*'# 查看软件包所有可用版本yum list httpd--showduplicates# 按关键字搜索yum search'web server'# 查看哪个包提供某个文件/命令yum provides sar# 安装软件包yuminstall-yvsftpd# 仅下载不安装(含依赖)yuminstallvsftpd--downloadonly--downloaddir=/root/# 安装本地 rpm 包yum localinstall ./vsftpd-3.0.2.x86_64.rpm# 升级软件包yum update vsftpd# 升级系统所有包yum update# 降级软件包yum downgrade-yhttpd-2.4.6-97.el7.centos# 卸载软件包yum remove-yvsftpd
在这里插入图片描述
4.2 软件包组管理
# 查看所有软件包组yum grouplist# 查看英文名称(方便脚本使用)yum grouplist-v# 查看组内包含哪些包yum groupinfo'Server with GUI'# 安装软件包组yum groupinstall'Server with GUI'# 卸载软件包组yum groupremove'MariaDB Client'4.3 YUM 历史记录
YUM 会自动记录每一次事务,方便回溯:
# 查看历史记录yumhistorylist# 查看某次事务详情yumhistoryinfo2# 撤销某次操作(如误删)yumhistoryundo4# 重做某次操作yumhistoryredo4五、总结
| 场景 | 推荐工具 | 说明 |
|---|---|---|
| 查询已安装包信息 | rpm -q | 快速、精准 |
| 安装/卸载软件 | yum | 自动解决依赖 |
| 批量升级系统 | yum update | 一键更新 |
🎯核心口诀:查询用 rpm,安装用 yum。
📖推荐阅读:
- CentOS 官方文档
- RPM 官方手册
- 阿里云镜像站
💬如有疑问,欢迎在评论区留言交流!
本文基于课堂笔记整理,持续更新中…