Linux 软件包管理——从 RPM 到 Yum 的完整指南
Linux 软件包管理——从 RPM 到 Yum 的完整指南前言在 Windows 系统中软件包管理通常依赖图形化安装向导如 .exe/.msi或第三方工具如 winget、Chocolatey。而在 Linux 生态中软件包管理是系统管理的基础技能尤其对于 Red Hat 系发行版如 CentOS、RHEL、FedoraRPM 和 Yum以及现代 DNF是核心工具。本文将系统梳理 RPM 包的结构、rpm 命令的常用操作、yum 的进阶用法以及如何配置和管理 yum 仓库帮助你从零搭建完整的软件包管理认知。一、Linux 发行版本与软件包格式1.1 主流发行版分类Debian 系Ubuntu、Debian → 使用.deb包apt管理Red Hat 系CentOS、RHEL、Fedora → 使用.rpm包yum/dnf管理其他Arch Linux 使用pacmanSUSE 使用zypper1.2 RPM 包文件名格式一个典型的 RPM 包文件名httpd-2.4.6-97.el7.centos.x86_64.rpmhttpd软件名称2.4.6主版本号97发行号表示该版本的打包次数el7目标操作系统版本Enterprise Linux 7centos打包者或定制版x86_64架构i686 表示 32 位noarch 表示不依赖架构.rpm扩展名1.3 RPM 包组成一个 RPM 包内部包含元数据包名、版本、依赖关系、冲突、描述等文件列表要安装到系统的实际文件二进制、配置文件、文档等安装/卸载脚本pre/post 脚本如创建用户、启动服务数字签名用于验证包完整性和来源合法性1.4 补充非对称加密与签名验证RPM 包通常使用 GPGGNU Privacy Guard进行签名。发布者用私钥签名用户使用公钥验证。rpm --import 公钥文件导入公钥后rpm -K 包名可验证签名是否有效。二、rpm 命令详解2.1 查询重点rpm -q是最常用的查询子命令支持多种组合命令作用rpm -qa列出所有已安装的包rpm -q httpd查询指定包是否安装显示版本rpm -qi httpd显示包的详细信息描述、大小、安装日期等rpm -ql httpd列出包安装后释放的所有文件路径rpm -qc httpd仅列出配置文件通常以 .conf 结尾rpm -qd httpd列出文档文件如 README、手册rpm -qf /etc/httpd/httpd.conf查询某个文件属于哪个包实用技巧结合grep过滤例如rpm -qa | grep samba快速查找 Samba 相关包。2.2 验证rpm -V用于验证已安装的包是否被修改过rpm-Vhttpd输出格式S.5....T. c /etc/httpd/httpd.confS文件大小改变5MD5 校验和改变T修改时间改变.未变化的属性c配置文件2.3 安装和卸载安装rpm -ivh package.rpmiinstallvverboseh显示进度条卸载rpm -e package注意需满足依赖否则会报错强制安装/忽略依赖rpm -ivh --nodeps package.rpm不推荐可能导致系统不稳定2.4 重新安装当包文件损坏或需要恢复默认配置时rpm-ivh--forcepackage.rpm# 重新安装覆盖原有文件rpm-Uvh--oldpackagepackage.rpm# 降级到旧版本三、提取 RPM 包中的文件3.1 Windows 提取使用 7-Zip 打开.rpm文件本质是 cpio 归档解压后得到xx.cpio再使用 7-Zip 或cpio工具提取3.2 Linux 提取# 方法一使用 rpm2cpiorpm2cpio package.rpm|cpio-idv# 方法二直接解压需安装 cpiorpm2cpio package.rpmpackage.cpio cpio-idvpackage.cpio提取后文件会按原始路径释放到当前目录方便查看或修改如破解脚本、提取配置文件。四、使用 Yum 管理软件包4.1 Yum 介绍YumYellowdog Updater Modified是 RPM 的前端工具自动解决依赖、从远程仓库下载包。核心优势无需手动处理依赖链一条命令即可完成安装。4.2 常用 yum 命令命令说明yum help查看帮助信息yum info 包名显示仓库中某个包的详细信息yum list列出所有可用和已安装的包支持*通配符yum search 关键词在包名和描述中搜索yum provides 文件查询哪个包提供某个文件如yum provides /etc/httpd/httpd.confyum install 包名安装包自动处理依赖yum localinstall 本地.rpm安装本地 RPM 包同时从仓库获取依赖yum downgrade 包名降级到指定版本需先确定旧版本在仓库中yum update升级所有可更新包yum update 包名升级单个包yum remove 包名卸载包同时删除依赖包需谨慎4.3 history 子命令Yum 事务回滚Yum 会记录所有操作历史方便回滚或撤销yumhistorylist# 查看历史记录ID、操作、包数yumhistoryinfoID# 查看某次事务详情yumhistoryundoID# 撤销某次事务回滚到之前状态yumhistoryredoID# 重做某次事务重新执行相同操作实战场景误升级了某个内核版本导致系统不稳定使用yum history undo ID快速回滚。4.4 软件包组管理一组相关软件包的集合例如“Development Tools”包含 gcc、make、glibc 等。yum group list# 列出所有包组yum group infoDevelopment Tools# 查看组内包含的包yum groupinstallDevelopment Tools# 安装整个组yum group removeDevelopment Tools# 卸载组五、配置 Yum 仓库5.1 仓库配置文件Yum 仓库配置文件位于/etc/yum.repos.d/下以.repo结尾。一个典型配置示例官方 CentOS 源[base] nameCentOS-$releasever - Base baseurlhttp://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-75.2 仓库管理命令命令作用yum repolist查看已启用的仓库yum repolist all查看所有仓库包括禁用状态yum --disablerepo* --enablerepobase list临时启用/禁用仓库yum clean all清除缓存元数据、包yum makecache重新生成缓存更新仓库元数据5.3 添加常用第三方仓库添加 Kubernetes 仓库catEOF/etc/yum.repos.d/kubernetes.repo[kubernetes] nameKubernetes baseurlhttps://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck1 repo_gpgcheck1 gpgkeyhttps://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF添加 Docker CE 仓库yuminstall-yyum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo添加 EPEL 仓库Extra Packages for Enterprise LinuxEPEL 提供大量官方源未收录的实用软件包yuminstall-yepel-release# 或手动安装rpm-ivhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm六、总结与最佳实践优先使用 yum日常安装、更新、卸载都用 yum避免手动 rpm 安装带来的依赖问题。谨慎使用--nodeps强制安装可能导致系统不稳定仅在调试或特殊场景下使用。定期清理缓存yum clean all释放磁盘空间yum makecache更新元数据。善用 history回滚功能是运维的“后悔药”建议在重大操作前先yum history list查看当前状态。仓库配置建议优先使用国内镜像如阿里云、清华源加速同时保留官方源作为 fallback。延伸建议与相关资源1. 从 Yum 到 DNF 的迁移在 Fedora 22 和 RHEL 8 中Yum 已被 DNFDandified Yum替代。DNF 基于 libsolv 库依赖解析速度更快语法与 yum 高度兼容。常用命令dnf install、dnf update、dnf history迁移成本低只需要将yum替换为dnf即可配置文件依然兼容.repo格式。2. 软件包管理进阶使用rpm -q --scripts查看包脚本某些 RPM 包在安装或卸载时会执行脚本如创建用户、启动服务通过rpm -q --scripts 包名可以查看这些脚本内容帮助你理解包的行为尤其适合安全审计或定制化部署。3. 实战离线环境下的软件包管理在内网无网络的环境中可以使用yumdownloader工具事先下载 RPM 包和依赖再通过yum localinstall安装。# 安装 yum-utils 后使用yumdownloader--resolve--destdir/path/to/packages httpd# 将 /path/to/packages 拷贝到目标机器yum localinstall /path/to/packages/*.rpm

相关新闻

YOLO26 权重初始化:不同初始化方法对训练收敛的影响与选择策略

YOLO26 权重初始化:不同初始化方法对训练收敛的影响与选择策略

🎬 Clf丶忆笙:个人主页 🔥 个人专栏:《YOLOv26最新专栏》 ⛺️ 努力不一定成功,但不努力一定不成功! 文章目录 一、权重初始化的基础理论 1.1 为什么权重初始化至关重要 1.2 梯度消失与梯度爆炸问题 1.2.1 梯度消失 1.2.2 梯度爆炸 1.2.3 梯度问题的量化分析 二、经…

2026/9/24 16:40:23 阅读更多 →
基于YOLOv8行人车辆检测系统

基于YOLOv8行人车辆检测系统

本项目面向道路交通场景中的行人与车辆目标检测任务,完成 YOLOv8 与 Faster R-CNN 两类检测模型的训练、评估、可视化对比,并集成 PyQt5 桌面端检测系统。系统支持图片检测、视频检测、摄像头实时检测、检测数量统计、历史记录保存以及 CSV / JSON 数据导…

2026/9/19 14:50:51 阅读更多 →
户外产品电商主图怎么做?PS AI 替换产品光影融合教程

户外产品电商主图怎么做?PS AI 替换产品光影融合教程

电商美工日常经常需要做产品替换、主图排版、光影融合这类工作。传统依靠 PS 手动完成抠图、变形、调色、排版,不仅耗费时间,画面还容易出现穿帮。遇到频繁换款、反复修改的需求,工作压力会明显增加。本文整理一套 PS AI 插件实操工作流&…

2026/9/20 23:08:24 阅读更多 →

最新新闻

@vanilla-extract/dynamic 使用指南:在零运行时架构下动态赋值 CSS 变量(assignInlineVars 与 setElementVars)

@vanilla-extract/dynamic 使用指南:在零运行时架构下动态赋值 CSS 变量(assignInlineVars 与 setElementVars)

前端开发工具 【免费下载链接】vanilla-extract Zero-runtime Stylesheets-in-TypeScript 项目地址: https://gitcode.com/gh_mirrors/va/vanilla-extract 点击查看 免费下载 导读 vanilla-extract 是一款「Zero-runtime Stylesheets-in-TypeScript」方案&#xf…

2026/9/24 16:39:46 阅读更多 →
PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private

PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private

PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan …

2026/9/24 16:39:46 阅读更多 →
Atmosphere-NX 报错 Fatal Error 010000000000002b 排查指南:3 条修复路径从轻到重

Atmosphere-NX 报错 Fatal Error 010000000000002b 排查指南:3 条修复路径从轻到重

Atmosphere-NX 报错 Fatal Error 010000000000002b 排查指南:3 条修复路径从轻到重 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere …

2026/9/24 16:39:46 阅读更多 →
在 MiniScript 中运行经典 BASIC 游戏 TRAIN:三种运行方式与源码级解析

在 MiniScript 中运行经典 BASIC 游戏 TRAIN:三种运行方式与源码级解析

示例工程 【免费下载链接】basic-computer-games An updated version of the classic "Basic Computer Games" book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic…

2026/9/24 16:39:46 阅读更多 →
Regal 规则解析:non-raw-regex-pattern——用 Raw String 编写 Rego 正则模式

Regal 规则解析:non-raw-regex-pattern——用 Raw String 编写 Rego 正则模式

后端认证鉴权云原生 【免费下载链接】opa Open Policy Agent (OPA) is an open source, general-purpose policy engine. 项目地址: https://gitcode.com/gh_mirrors/op/opa 点击查看 免费下载 本文是 Regal 规则库 Idiomatic(惯用法)分类下…

2026/9/24 16:39:46 阅读更多 →
fq 解码 AVI:样本索引优先级、流信息提取与解码加速实战指南

fq 解码 AVI:样本索引优先级、流信息提取与解码加速实战指南

fq 解码 AVI:样本索引优先级、流信息提取与解码加速实战指南 【免费下载链接】fq fq - jq for binary formats. Tool, language and decoders for working with binary formats. 项目地址: https://gitcode.com/gh_mirrors/fq/fq fq 是面向二进制格式的 jq 工…

2026/9/24 16:38:45 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →