Linux 软件包管理——从 RPM 到 Yum 的完整指南

发布时间:2026/11/4 22:57:35

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
延伸阅读

更多相关文章

2026/11/5 20:28:06

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

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

2026/10/27 6:59:11

港科大联手华为诺亚方舟实验室:让3D场景重建计算量减少一半

这项由香港科技大学与华为诺亚方舟实验室、香港城市大学联合开展的研究,以预印本形式于2026年7月13日发布在arXiv平台,论文编号为arXiv:2607.10995。研究成果命名为AsySplat,聚焦于如何让计算机更高效地从一组照片中"脑补"出完整的…

2026/10/30 4:15:12

Processing创意编程:用玫瑰线方程实现数学可视化与动态艺术

1. 从“玫瑰”到“代码”:一个迷人的数学可视化项目如果你对创意编程感兴趣,或者正在学习Processing,那么“玫瑰线”绝对是一个不容错过的经典项目。它不像那些复杂的3D渲染或物理模拟,需要深厚的数学和图形学功底。玫瑰线项目的美…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑