首页/系统/Linux 运维命令速查/yum 经典包管理命令

yum 经典包管理命令

yum 是 CentOS 7 与 RHEL 7 时代的标准包管理器(RHEL8+ 已由 dnf 接棒):安装、查询、仓库与组管理。

Linux 运维命令速查系统更新于 2026-10-13

yum 是什么

yum 是 RHEL 7 与 CentOS 7 时代的默认包管理器,用仓库元数据解析依赖并完成安装、升级、卸载。RHEL 8 之后它的位置被 dnf 取代,新系统上 yum 只是指向 dnf 的软链接,因此子命令风格一脉相承,老教程里的命令基本可以直接用。运维中还会大量遇到 CentOS 7 机器,理解它的仓库配置、缓存机制与历史回滚,仍然有现实价值。

基本信息

适用平台RHEL 7、CentOS 7、Oracle Linux 7 及更早版本;RHEL 8+ 上 yum 是 dnf 的别名
命令语法yum [选项] 子命令 [包名...]
常用子命令install、update、remove、info、list、search、provides、repolist、clean、makecache、groupinstall、history
仓库配置仓库定义在 /etc/yum.repos.d/*.repo;主配置 /etc/yum.conf;缓存在 /var/cache/yum;日志在 /var/log/yum.log
权限要求安装、升级、卸载需要 root 或 sudo;查询类子命令普通用户可用

典型使用场景

  • 安装依赖:yum install -y nginx,一次解析完整依赖链
  • 由文件反查包:yum provides */ifconfig 定位命令来自哪个包
  • 清理过期缓存:报元数据错误时 yum clean all 后 makecache 重建
  • 整组安装开发环境:groupinstall 'Development Tools' 一次装齐编译工具链
  • 变更前预览:yum check-update 先看有哪些可用更新,再决定是否执行
  • 回滚变更:yum history 查看事务编号,用 undo 撤销上一次操作

常用示例

常用示例
yum install -y nginx
yum info nginx
yum list available | head
yum search nginx
yum remove telnet
yum provides */ifconfig              # 由文件反查包
yum check-update                     # 只看有哪些可升级
yum repolist -v                      # 查看启用的仓库
yum clean all && yum makecache       # 修元数据错误
yum groupinstall -y 'Development Tools'
yum history; yum history undo last

子命令与 dnf 对照

用途yum 写法dnf 写法
安装yum install 包名dnf install 包名
升级全部yum updatednf update
由文件反查yum provides 路径dnf provides 路径
组安装yum groupinstall '组名'dnf group install '组名'
回滚yum history undo 编号dnf history undo 编号
模块流不支持dnf module
CentOS 7 已于 2024 年 6 月停止维护,官方镜像仓库被移走,直接 yum install 会报 404 或 Cannot find a valid baseurl。继续使用的老机器需要把仓库地址改成归档源(vault.centos.org),或指向企业内部镜像,同时要清楚这些机器已不再获得安全补丁。
缓存与元数据:yum 把仓库元数据缓存在 /var/cache/yum 下,默认有效期内不会重新拉取。报元数据校验失败、仓库地址变更或同步了内网镜像后,标准动作是 yum clean all 再 yum makecache,强制重建本地缓存。
生产机上执行 yum update 前先 yum check-update 看清单,并确认是否包含 kernel、glibc、systemd 这类需要重启或影响运行时的组件。老系统上跨版本升级风险更高,建议锁定关键包版本(exclude 或 versionlock 插件)并安排在维护窗口执行。
版本锁定与排除:可以在 /etc/yum.conf 或仓库文件里写 exclude=包名* 排除指定包,也可以安装 yum-plugin-versionlock 插件后用 yum versionlock add 包名 冻结版本。老系统上这两招常用于避免内核或运行时被意外升级,是维持「只打安全补丁」策略的常用手段。换成内网镜像源时仍要保留 gpgcheck,否则包的完整性与来源无法校验。
查询与追溯:yum list installed 列出已安装的包,rpm -qa 更直接;每次 yum 事务都会写入 /var/log/yum.log 并记录在 history 里,审计或复盘时先执行 yum history list 找到编号,再用 yum history info 编号 看这次事务具体动了哪些包,确认影响面后再决定是否回滚。
yum history undo 能回滚的前提是仓库里仍能取到旧版本包,若已被撤下就会失败。另外跨大版本升级(例如从 7 升到 8)不能靠 yum 完成,必须使用发行版提供的迁移工具或重装,把老机器留在一个不再获得安全更新的版本上属于长期风险。
变更前先看清单再动手,安装与升级分开执行,便于定位是哪一步带来了变化;临时测试仓库只在需要时显式启用,用完立刻关掉,避免默认的仓库集合被悄悄放大。新版本系统上包管理已统一到新一代工具,子命令对应但模块流、按模块启用等机制不同,照搬旧教程容易碰壁。

易错点

  • yum 默认启用全部仓库,临时加入的测试仓库不显式用 --enablerepo 与 --disablerepo 控制,会引入非预期版本的包
  • updates 仓库开启时 update 会顺带升级依赖与内核,变更前先用 check-update 看清单(RHEL 7 的 yum 与 dnf 在这一点上一致)
  • CentOS 7 已停维护,官方仓库不可用会报 404,需要切换到归档源或内网镜像,且要意识到这些机器没有安全更新
  • 仓库元数据异常时反复重试而不清理缓存,应执行 yum clean all 与 makecache 重建
  • 在 RHEL 8+ 上照搬老教程的 yum 参数,遇到模块流等新机制会写法不通,应改用 dnf 对应子命令
  • 依赖默认仓库集合完成变更:默认启用了什么、第三方仓库是否还挂着往往没人清楚,装到的版本可能来自不预期的来源,变更记录里应写明当时启用的仓库

数据来源与参考

  • man 8 yum(RHEL7 文档)
  • Red Hat 文档:yum 包管理

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌