Linux软件包管理完全指南

🐧 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.rpmrpmyumdnf
DEB 系Debian、Ubuntu、Kali.debdpkgapt

📌本文聚焦 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 包包含三个核心部分:

  1. 待安装的文件:二进制、配置文件、文档等
  2. 元数据信息:名称、版本、依赖关系、许可证、变更日志
  3. 脚本:安装、更新、卸载时自动执行的脚本

🔐数字签名:软件提供商使用 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-c

3.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_config

3.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 官方手册
  • 阿里云镜像站

💬如有疑问,欢迎在评论区留言交流!


本文基于课堂笔记整理,持续更新中…