Linux 运维必学(二十)| 软件管理三大核心:RPM、SRPM、YUM 全实操详解
Linux 软件安装,主要分为四大体系:Tarball源码编译、RPM二进制包、SRPM源码RPM包、YUM在线仓库。上一篇我们详解了最原始的 Tarball 编译方式。而在真实生产环境中,95%的软件安装、升级、卸载、排错,都依靠 RPM + YUM 完成。运维日常遇到的依赖报错、安装冲突、文件篡改、源同步失败,根源基本都是没吃透这套标准化软件管理体系。今天这篇文章,极简讲透RPM离线管理、SRPM定制编译、YUM全自动依赖管理,全覆盖面试考点+生产实操,零基础可直接落地使用。
一、RPM 包管理|离线软件核心机制
RPM 是 CentOS、RHEL 系列系统默认的离线软件管理工具,核心特点是数据库记录式管理,全程标准化、可溯源。软件安装时,系统会自动把软件版本、文件路径、依赖关系、权限属性等信息,统一写入 RPM 专属数据库。后续所有查询、校验、升级、卸载,都依托数据库完成。1、RPM 核心优缺点(面试必背)
- 无需编译:自带编译完成的二进制程序与配置文件,安装速度快、上手简单。
- 前置环境校验:安装前自动检测系统版本、硬盘空间,规避不兼容安装。
- 信息完整:自带版本说明、软件用途、依赖清单,方便运维溯源管理。
- 数据库管控:统一归档软件信息,支持精准升级、卸载、文件完整性校验。
- 环境依赖强:软件运行环境必须和打包环境一致或兼容。
- 依赖需手动解决:无法自动补全依赖,缺包直接安装失败。
- 卸载风险高:必须自上而下卸载,误删底层基础软件,会导致系统崩溃。
2、RPM 安装命令 & 生产高阶参数
参数释义:-i 安装、-v 展示详细信息、-h 显示安装进度条- --nodeps:忽略依赖强制安装,仅测试环境使用,极易导致软件失效
- --replacefiles:覆盖冲突文件,操作不可逆,需确认文件可覆盖再执行
- --replacepkgs:重装已安装软件,解决文件损坏、缺失问题
- --force:强制参数,等价于 replacefiles + replacepkgs 合集
- --test:模拟安装,仅检测报错,不实际部署,适合提前排错
- --justdb:仅修复RPM数据库,不改动系统文件
- --nosignature:跳过软件签名校验,忽略来源安全验证
- --prefix 路径:自定义安装目录,脱离系统默认路径
- --noscripts:禁止软件自动执行安装脚本,规避脚本异常风险
3、RPM 默认标准化安装路径
RPM 软件安装路径固定统一,是运维排查文件位置的核心依据:- 帮助文档:/usr/share/doc、/usr/share/man
- 系统服务:/usr/lib/systemd/system
- 日志/数据文件:/var/log、/var/lib
4、RPM 升级模式核心区别
- -Uvh 升级(生产常用):智能适配,无旧包则新装,有旧包则直接升级
- -Fvh 刷新(仅更新):只升级系统已安装的软件,未安装的软件直接跳过
5、RPM 全套查询实操
RPM 查询分为两类:查询已安装软件(读系统数据库)、查询未安装包(读本地文件)。数据库路径固定:/var/lib/rpm/已安装软件查询
- rpm -qi 软件名:查看软件版本、厂商、用途等详细信息
- rpm -ql 软件名:列出软件所有安装文件和目录
- rpm -q --scripts 软件名:查看软件安装预设脚本
未安装RPM包查询
使用 -qp 系列参数,仅读取包内信息,不操作系统数据库:rpm -qp[icdlR] 包名6、RPM 文件完整性校验
核心原理:对比系统当前文件与数据库原始记录,精准识别文件篡改、权限变更、文件损坏。常用校验命令
- rpm -Vf 文件路径:校验单个文件所属软件完整性
异常标识含义(排错必看)
S文件大小、M权限/类型、5MD5指纹篡改、D设备编号、L软链接路径U所属用户、G所属群组、T修改时间、P功能属性变更文件类型标识
c配置文件、d文档文件、g冗余文件、l授权文件、r说明文件7、RPM 数字签名安全校验
核心作用:验证软件包官方来源,防止恶意篡改、植入病毒,保障系统安全。校验流程
核心配置
在 yum.conf、repo 仓库文件中开启 gpgcheck=1 强制校验;CentOS7 公钥默认路径:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7⚠️ 重点区别:YUM 受该配置控制,手动 RPM 安装默认不校验签名。8、RPM 卸载与数据库修复
- 卸载命令:rpm -e 软件名,严格遵循「自上而下」卸载,禁止删除底层依赖
- 数据库修复:rpm --rebuilddb,解决数据库损坏、查询异常、安装报错等问题
二、SRPM 源码RPM包|定制编译方案
SRPM 全称 Source RPM,后缀为*.src.rpm,是 RPM 的源码版本,主打自定义修改源码、定制编译场景。1、SRPM 核心对比优势
- 对比普通RPM:内置完整源代码,支持自定义修改源码、调整功能
- 对比Tarball:自带依赖描述、spec编译规则,标准化更高,无需手动编写Makefile
2、SRPM 标准使用流程
1、通过 rpmbuild 工具编译SRPM包;2、自动生成标准RPM二进制包;3、安装编译完成的RPM包3、rpmbuild 核心编译命令
- --rebuild:仅编译打包,不安装,成品输出至 /root/rpmbuild/RPMS/
- --recompile:编译+打包+自动安装,一步完成
- -ba xxx.spec:同时生成 RPM 二进制包 + SRPM 源码包
- -bb xxx.spec:仅编译生成 RPM 二进制包
4、rpmbuild 固定目录结构
- SPECS:存放 .spec 编译配置文件(版本、规则、脚本)
5、spec 配置文件规则
文件以基础信息Summary开头,通过 % 区分功能段落(预处理、编译、安装、清理),标准化管控整套编译流程。
三、YUM 在线仓库|全自动依赖管理神器
YUM 是基于 RPM 的进阶工具,完美解决 RPM依赖繁琐、手动排错低效的痛点,可自动分析、下载、补齐所有依赖,是生产环境首选安装方式。1、YUM 工作原理
1、读取本地repo仓库配置,拉取云端软件清单;2、比对本机RPM数据库,识别缺失依赖;3、自动批量下载、安装所有依赖与目标软件。2、YUM 高频实操命令
通用参数
查询类命令
- yum provides 文件路径:通过文件反向查询所属软件
运维操作命令
- yum install 软件名:安装软件,自动补全依赖
- yum update 软件名:升级指定软件,支持全局系统更新
- yum remove 软件名:卸载软件,自动处理关联依赖
3、YUM .repo 仓库配置详解
repo文件是YUM源核心配置,各参数作用清晰易懂:4、YUM 缓存清理与仓库状态查看
- yum repolist all:查看所有仓库启用状态、软件数量
- yum clean packages:清理本地下载的RPM安装包
- yum clean headers:清理软件头文件缓存
- yum clean all:清空全部缓存,解决源不同步、更新失败问题
5、YUM 软件群组批量安装
生产拓展小技巧
YUM群组软件分为强制包、默认包、可选拓展包,系统默认只装前两类,会缺失编译、调试工具。使用yum groupinstall "Development Tools" --with-optional,可完整安装全部开发工具,一次性补齐 gcc、make 等全套编译依赖,是搭建源码编译环境的最优方案。可通过 /etc/yum.conf 的 group_package_types 参数管控群组安装类型。
四、全文核心速读总结
💡RPM:离线标准化二进制包,数据库管控、安装高效,缺点是无法自动解决依赖💡SRPM:源码型RPM包,兼顾标准化与灵活性,支持自定义源码编译修改💡YUM:RPM进阶工具,自动补齐依赖,支持在线批量部署,生产环境首选💡完整体系:Tarball灵活编译、SRPM定制编译、RPM离线标准化、YUM全自动运维,覆盖Linux所有软件安装场景吃透这套软件管理体系,可解决99%的Linux软件安装、升级、依赖、篡改报错,是运维进阶的核心必修课!