一、软件包管理概述

软件包管理是操作系统运维的核心基础能力,负责软件的安装、卸载、升级、依赖解析与文件版本管控。不同操作系统拥有独立的包管理体系,本文将对比 Windows 与 Linux 包管理机制,并深度讲解 RPM 底层原理YUM 仓库实战运维

1.Windows 软件管理机制

Windows 软件安装分为系统注册安装与绿色免安装两种模式:

  • 正规安装程序:通过安装包写入注册表、注册系统服务,可在「控制面板 - 程序和功能」统一管理卸载、修复。

  • 绿色软件:无需安装、无注册表写入,解压即用,如 U 盘启动盘工具 Rufus。

Windows 软件来源主要分为:官方应用商店、软件厂商官网、正规第三方分发平台。

2.Linux 主流包管理体系

Linux 发行版根据生态分为两大主流包管理体系,适配不同的软件格式与工具链:

(1)RPM 系(.rpm 软件包)

以 RedHat 生态为核心,服务器领域应用最广,使用 rpm/yum 工具管理:

  • RHEL:企业级商用 Linux 系统

  • CentOS / CentOS Stream:RHEL 开源社区复刻版

  • Fedora:RedHat 免费桌面测试版

  • Rocky Linux、OEL:兼容 RHEL 的开源替代发行版

(2)Debian 系(.deb 软件包)

社区开源规范度极高,使用 dpkg/apt 工具管理:

  • Debian:纯开源、遵循 GNU 规范的经典 Linux 系统

  • Ubuntu:Debian 衍生版,主打桌面与轻量化服务器场景

  • Kali Linux:基于 Debian,专注渗透测试与安全取证

(3)小众发行版

ArchLinux、Gentoo 等极简定制化系统,采用滚动更新、源码编译等特殊包管理模式。

请添加图片描述

二、RPM 软件包深度解析

RPM(RedHat Package Manager)是 RedHat 推出的标准化软件包管理机制,彻底替代传统解压安装方式,实现软件版本、依赖、权限、文件路径的标准化管控,是 CentOS/RHEL 系列系统的核心包管理标准。

1.RPM 包命名规范

标准命名格式:name-version-release.architecture.rpm

示例:lrzsz-0.12.20-36.el7.x86_64.rpm

  • name:软件包名称,如 lrzsz

  • version:软件官方版本号,如 0.12.20

  • release:系统二次打包发行号,带系统标识 el7(CentOS7)

  • architecture:适配硬件架构

    • x86_64:64 位英特尔/AMD 架构

    • aarch64:ARM 64 位架构

    • noarch:全架构通用,无硬件限制

2.RPM 包核心组成

每一个 RPM 包并非简单压缩文件,而是包含三大核心模块,保障软件安全可控运行:

  • 程序实体文件:二进制程序、配置文件、文档、依赖库等运行资源

  • 元数据信息:软件版本、架构、依赖关系、许可证、更新日志、作者信息

  • 生命周期脚本:安装、升级、卸载前后自动执行的预置脚本

3.RPM 签名校验机制

非对称加密:有一对公钥和私钥。

  • 公钥:分享给别人,用来加密数据。

  • 私钥:自己保留,用来解密公钥加密的数据。

Linux中rpm包会被私钥签名,客户端使用公钥验证签名,确保文件的完整性。

4.RPM 版本安装特性

  • 绝大多数软件仅支持单版本安装,高版本会覆盖低版本

  • 内核 kernel 为特殊项:支持多版本并存,新内核启动异常时可回滚旧内核,保障系统可用性

  • 软件升级支持跨版本更新,无需逐版本迭代,升级默认保留原始配置文件

三、RPM 核心命令实战

RPM 原生命令可实现软件包查询、校验、安装、卸载、提取,适合精细化手动运维场景。

1.软件包查询(核心重点)

# 查询系统所有已安装软件包
rpm -qa

# 查询指定软件是否安装
rpm -q httpd
rpm -q kernel

# 查询软件包详细元数据信息
rpm -q coreutils -i

# 查询软件包包含的所有文件路径
rpm -q openssh-server -l

# 仅查询软件配置文件
rpm -q openssh-server -c

# 仅查询软件包涵的文档
rpm -q openssh-server -d

# 查询某个文件归属的软件包
rpm -q -f /etc/ssh/sshd_config

# 查看软件包涵的脚本
rpm -q openssh-server --scripts

# 查看软件版本更新日志
rpm -q openssh-server --changelog

# 查看未安装的 RPM 包内部配置文件
rpm -q -p httpd-2.4.6-99.el7.centos.1.x86_64.rpm -c

# 查询系统中某个软件包组中包涵哪些软件包
rpm -qg 'System Environment/Base'

同样 -l -d -i 也可以配合 -p 使用

# 扩展

# 查看软件包所在仓库精确位置
repoquery --location httpd

# 此时可以通过 wget 下载特定文件
wget \

2.软件包完整性校验

用于检测软件文件是否被修改、丢失、权限异常,是系统排错常用命令。

# 校验软件文件完整性,是否有问题
rpm -V openssh-server

标识说明:修改配置、缺失文件、权限变更均会输出异常标识,无输出代表文件完整无篡改。

3.软件安装与卸载

# 下载软件包
repoquery --location lrzsz
:下载地址
wget 下载地址

# 基础安装
rpm -i lrzsz-0.12.20-36.el7.x86_64.rpm

# 可视化友好安装(推荐)
rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm

# 卸载软件
rpm -e lrzsz

# 查看是否安装成功
rpm -q lrzsz

# 可视化卸载
rpm -evh lrzsz

# 重新安装软件(覆盖修复损坏文件)
rpm --reinstall -vh lrzsz*

痛点说明:RPM 原生命令不自动解决依赖,依赖缺失会直接报错,适合无依赖的独立软件安装。

4.RPM 包文件提取(无需安装)

仅提取包内文件,不写入系统注册表、不注册服务,适合单独恢复丢失文件场景。

方法一:分步骤提取

  • (1) 将文件转换为cpio格式 [root@centos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm > httpd-2.4.6-99.el7.centos.1.x86_64.cpio

  • (2) 查询 cpio 格式(一种打包格式)文件中有哪些文件 [root@centos7 ~]# cpio -t < httpd-2.4.6-99.el7.centos.1.x86_64.cpio ./etc/httpd ./etc/httpd/conf ./etc/httpd/conf.d ./etc/httpd/conf.d/README ./etc/httpd/conf.d/autoindex.conf …

  • (3) 配置管道查询特定文件 [root@centos7 ~]# cpio -t < httpd-2.4.6-99.el7.centos.1.x86_64.cpio |grep ‘httpd.conf’ ./etc/httpd/conf/httpd.conf ./usr/lib/tmpfiles.d/httpd.conf 19331 blocks

  • (4) 提取所有文件,-d选项指明提取过程中创建对应的目录分层结构 [root@centos7 ~]# cpio -id ‘*’ < httpd-2.4.6-99.el7.centos.1.x86_64.cpio

  • (5) 提取特定文件 [root@centos7 ~]# cpio -id ./etc/httpd/conf/httpd.conf < httpd-2.4.6-99.el7.centos.1.x86_64.cpio ```

方法二:一步提取所有文件

# 一键提取 RPM 所有文件
rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm | cpio -id '*'

四、YUM 高级包管理实战

YUM(Yellowdog Updater Modified) 是 RPM 的增强工具,核心解决 依赖自动解析、批量安装、仓库管理、版本升级 问题,是生产环境主流包管理方式。

1.核心优势

  • 自动检测并安装所有依赖包,规避 RPM 依赖报错

  • 支持远程仓库批量下载、升级、降级软件

  • 支持软件包组批量部署,简化环境搭建

2.常用 YUM 命令大全

# 查看命令帮助
yum help

# 查看软件包详细信息
yum info httpd

# 模糊查询软件包
yum list 'http*'

# 查看软件所有可用版本
yum list httpd --showduplicates

# 关键字搜索软件描述
yum search 'web server'
yum search all 'web server'

# 查询哪个包提供指定命令/文件
yum provides sar

# 安装软件
yum install vsftpd

# 仅下载不安装(备份软件包)
yum install vsftpd --downloadonly --downloaddir=/root/

# 安装本地 RPM 包并自动解决依赖
yum localinstall ./xxx.rpm

# 软件版本降级
yum downgrade -y xxx

# 升级 vsftpd 版本为 3.0.2-29.el7_9
yum update vsftpd-3.0.2-29.el7_9

# 升级系统中所有软件为最新版本
yum update

# 卸载软件
yum remove -y vsftpd

3.YUM 事务历史管理

可追溯所有安装、卸载、升级操作,支持事务回滚,运维容错性极强。

# 查看所有操作历史
yum history (list可省略)

# 查看指定事务详情
yum history info 2

# 反向操作第4个事务
yum history undo 4

# 重做操作第4个事务
yum history redo 4

4.软件包组批量管理

一键安装桌面环境、开发工具、服务器组件等成套环境,大幅提升部署效率。

# 查看所有软件组
yum grouplist

# 查看仓库中软件包组信息
yum groupinfo <tab><tab>
yum groupinfo 'Server with GUI'

# 安装软件组
yum groupinstall "Server with GUI"

# 卸载软件组
yum groupremove "Server with GUI"

五、YUM 仓库深度配置与运维

YUM 依靠仓库配置文件获取软件源,合理配置官方源、第三方源是服务器稳定运维的基础。

1.核心配置文件说明

  • 全局主配置:/etc/yum.conf

  • 仓库源目录:/etc/yum.repos.d/(所有 .repo 后缀文件均为软件源)

# 查看完整的配置内容
yum install -y yum-utils

# 导出 yum 完整配置
yum-config-manager

main 部分设置全局配置:

  • enabled = 1,仓库默认启用。
  • gpgcheck = 1,仓库默认启用gpg校验。
  • keepcache = 0,不保存缓存。
  • cachedir = /var/cache/yum,缓存文件保存的位置。
  • reposdir = /etc/yum.repos.d, /etc/yum/repos.d,yum仓库配置文件。
  • yum管理的软件包存放在yum仓库,yum仓库配置文件存放在/etc/yum.repos.d目录。

2.仓库启停与缓存管理

# 查看所有仓库(含禁用)
yum repolist all

# 仅查看已启用仓库
yum repolist

# 启用/禁用指定仓库
yum-config-manager --enable xxx
yum-config-manager --disable xxx

# 清理缓存数据
yum clean <tab><tab>

# 清理所有缓存数据
yum clean all

# 创建缓存数据
yum makecache

3.企业常用第三方源部署

(1)EPEL 扩展源

EPEL(Extra Packages for Enterprise Linux),是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经常用到的包。EPEL 提供 CentOS 官方源未收录的海量扩展软件,是运维必备源。

# 直接使用aliyun的源
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
(2)Kubernetes 源
# 导出 Kubernetes 完整配置
yum-config-manager --add-repo=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

# 安装 kubectl 包
yum install kubectl --nogpgcheck
(3)Docker CE 源
cat << 'EOF' > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=0
EOF

# 查看docker版本
yum list docker-ce

六、总结

本文系统性梳理了 Linux 软件包管理完整体系:从系统包管理生态对比RPM 底层原理与手动运维,到 YUM 依赖自动化管理企业级仓库源配置,覆盖从零基础到生产实战的全场景操作。

RPM 偏向底层精细化管控,适合排查故障、提取文件、手动验证包完整性;YUM 偏向高效自动化运维,解决依赖难题、适配批量部署、源管理场景。二者结合,是 CentOS/RHEL 系统运维的核心必备技能。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐