Yum包管理器详细介绍

下面用一篇偏"教程型"的文章,系统地讲一下 yum 的安装与使用、适用平台、软件源来源,以及它和 apt 的关系等。你可以当成入门说明书来看。


一、Yum 是什么?

Yum(Yellowdog Updater, Modified)是基于 RPM 的 Linux 发行版常用的软件包管理工具。它的核心作用:

  • 自动解决软件包依赖关系
  • 从远程仓库(软件源)下载并安装/更新/删除 RPM 包
  • 提供统一的命令行接口,方便系统维护

Yum 以及后来的 DNF (Yum 的下一代替代品)是 RPM 系的主流工具;与之对应的是 Debian 系的 APT


二、Yum 主要运行在哪些平台上?

Yum 是为 RPM 系发行版 设计的,常见的有:

  • CentOS 5/6/7 及之前
  • Red Hat Enterprise Linux(RHEL)5/6/7
  • Oracle Linux 旧版本
  • Fedora 早期版本

后来,这些系统大多逐步过渡到 dnf

  • Fedora 22+:默认使用 dnf
  • RHEL 8+ / CentOS 8+ / Rocky / AlmaLinux 等:底层是 dnf,保留 yum 命令作为兼容层(yum 实际是调用 dnf)

总结:

  • 老的 RHEL/CentOS/Fedora:真正使用 yum
  • 新的 RHEL/CentOS/Fedora:表面上是 yum,实质是 dnf
  • Debian / Ubuntu 等 DEB 系发行版:不用 yum,用 apt/apt-get

三、在 Ubuntu 上可以用 yum 吗?

严格来说:

  • Ubuntu 默认不使用 yum,也不需要 yum
  • Ubuntu 是 Debian 系 ,包格式是 .deb,包管理工具是 apt-get/apt/aptitude,底层是 dpkg
  • Yum 是为 RPM 包(.rpm) 设计的,和 .deb 并不兼容

能不能"装"一个 yum 到 Ubuntu?

理论上,你可以在 Ubuntu 上通过 apt 安装一个 yum 程序(某些仓库里有兼容版本),但:

  • 这个 yum 在 Ubuntu 上几乎 没有实际意义
  • 它无法直接用 Ubuntu 的 APT 仓库来管理 .deb
  • 你还需要另外配置 RPM 数据库和 RPM 仓库,非常不自然且没有必要

所以在实践中:

在 Ubuntu 上不使用 yum,正常用 apt 就好。

如果你想学 yum,一般是在 CentOS / RHEL / Fedora 等 RPM 系上操作。


四、Yum 的软件源来自哪里?

Yum 的软件包来源是一个或多个 仓库(repository,俗称"源")。每个仓库有一个配置文件,描述:

  • 仓库名字和 ID
  • 仓库服务器的 URL(HTTP/HTTPS/FTP/文件路径)
  • 是否启用、是否检查 GPG 签名等

Yum 仓库配置文件位置

通常有两类位置:

  1. 主配置文件:

    • /etc/yum.conf
  2. 仓库配置文件(每个源一个 .repo 文件):

    • /etc/yum.repos.d/*.repo

例子:在 CentOS 7 中,系统自带仓库文件如:

  • /etc/yum.repos.d/CentOS-Base.repo
  • /etc/yum.repos.d/CentOS-Extras.repo
    等等

.repo 文件示例(简化版):

ini 复制代码
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

字段含义简要:

  • [base]:仓库 ID
  • name:仓库描述
  • baseurl:仓库的 URL(可以是多个)
  • enabled=1:是否启用(0 为禁用)
  • gpgcheck=1:是否检查 GPG 签名
  • gpgkey=...:GPG 公钥路径,用来校验包签名

常见源类型

  • 官方源:系统发行方提供,如 CentOS 官方、RHEL 官方
  • 第三方源
    • EPEL(Extra Packages for Enterprise Linux)
    • RPM Fusion(主要给 Fedora 提供多媒体类包等)
    • 企业或组织内部的私有镜像源

五、Yum 和 Apt 是什么关系?有什么区别?

Yum 和 Apt 都是 包管理"前端工具",负责:

  • 查询、安装、更新、删除软件包
  • 自动计算依赖,组合一系列底层操作

1. 不同的发行版家族

  • Yum/DNF 对应:RPM 系
    • RHEL、CentOS、Fedora、Oracle Linux、Rocky、AlmaLinux...
    • 包格式:.rpm
    • 底层安装命令:rpm
  • APT 对应:Debian 系
    • Debian、Ubuntu、Linux Mint、Kali 等
    • 包格式:.deb
    • 底层安装命令:dpkg

简单来说:

环境决定工具:

  • 用 RHEL / CentOS 就用 yum/dnf
  • 用 Ubuntu / Debian 就用 apt

2. 概念对照

功能上,它们很多概念是对应的:

  • Yum 的仓库配置:/etc/yum.repos.d/*.repo
    ↔ Apt 的源列表:/etc/apt/sources.list/etc/apt/sources.list.d/*.list
  • yum install
    apt install
  • yum remove
    apt remove
  • yum update
    apt upgrade / apt full-upgrade
  • yum search
    apt search
  • yum info
    apt show / apt-cache show

本质差别在于背后管理的包格式和发行版生态不同


六、如何在支持 Yum 的系统上安装/配置 Yum?

在 CentOS / RHEL 等系统上,yum 一般是系统自带的,不需要你手动安装。

检查 yum 是否存在

bash 复制代码
yum --version

如果能输出版本信息,就说明 yum 已经安装好了。

在更新的系统,比如 CentOS 8 / RHEL 8:

bash 复制代码
yum --version   # 你会发现它实际上是 dnf 的一个"壳子"或软链接
dnf --version

七、Yum 的基本使用方法

下面以传统 yum 语法为主(在 dnf 上也基本通用)。

1. 更新仓库缓存

bash 复制代码
yum makecache
  • 从已配置的仓库获取包列表,构建本地缓存
  • 类似 apt 的 apt update(注意:yum 的 check-update 是检查可更新列表)

2. 搜索软件包

bash 复制代码
yum search 关键字

示例:

bash 复制代码
yum search nginx

会列出名称或描述中包含"nginx"的软件包。

3. 查看软件包信息

bash 复制代码
yum info 包名

示例:

bash 复制代码
yum info nginx

可以看到版本、依赖、描述、仓库来源等。

4. 安装软件包

bash 复制代码
sudo yum install 包名

示例:

bash 复制代码
sudo yum install nginx

要安装多个包:

bash 复制代码
sudo yum install nginx git vim

5. 删除(卸载)软件包

bash 复制代码
sudo yum remove 包名

示例:

bash 复制代码
sudo yum remove nginx

注意:和 apt 一样,remove 时要留心依赖项,避免不小心删掉关键组件。

6. 更新系统软件

  • 更新指定包:

    bash 复制代码
    sudo yum update 包名
  • 更新系统上所有可更新的软件包:

    bash 复制代码
    sudo yum update

通常会用于打安全补丁、升级版本等。

7. 列出已安装的软件包

bash 复制代码
yum list installed

或只看某个包是否安装:

bash 复制代码
yum list installed | grep nginx

8. 列出仓库中的可用包

bash 复制代码
yum list available

或:

bash 复制代码
yum list available nginx*

9. 清理缓存

bash 复制代码
sudo yum clean all
  • 删除本地缓存的包信息和已下载的 rpm 包,有利于释放磁盘空间,解决某些缓存导致的问题。

八、Yum 仓库的管理与配置(简要)

1. 列出所有仓库

bash 复制代码
yum repolist all
  • enabled:启用的仓库
  • disabled:禁用的仓库

只看启用的:

bash 复制代码
yum repolist

2. 临时使用某个仓库

例如临时只使用 base 仓库:

bash 复制代码
yum --disablerepo="*" --enablerepo="base" install 包名

3. 增加第三方仓库(例:EPEL)

在 CentOS 7:

bash 复制代码
sudo yum install epel-release

安装完后会在 /etc/yum.repos.d/ 目录下增加 EPEL 的 repo 文件,这样就可以从 EPEL 仓库安装更多软件。


九、和 apt 命令的简易对照表

功能 Yum/DNF 命令 Apt 命令
更新源索引 / 缓存 yum makecache / dnf makecache apt update
检查可更新的软件 yum check-update apt list --upgradable
更新所有软件 yum update / dnf upgrade apt upgrade / apt full-upgrade
安装软件 yum install pkg apt install pkg
删除软件 yum remove pkg apt remove pkg / apt purge
搜索软件 yum search keyword apt search keyword
查看包信息 yum info pkg apt show pkg
列出已安装的软件 yum list installed apt list --installed
清理缓存 yum clean all apt clean / apt autoclean

十、学习与实践建议

  1. 在 Ubuntu 上学习 apt
    如果你目前在用 Ubuntu,日常完全用 apt 就够了。yum 在 Ubuntu 上不合适。
  2. 如要学 yum,找台 CentOS / Rocky / AlmaLinux 虚拟机练习
    用 VirtualBox、VMware 或云服务器装一台,比如 Rocky Linux 8/9,然后用以上命令逐个练习。
  3. 理解的是"思路",而非死记命令
    apt 和 yum 的命令非常相似:
    • 装:install
    • 删:remove
    • 查:search / info
    • 更:update
      一旦你理解了一个体系(如 apt),切到另一个体系(如 yum)会很快上手。
相关推荐
HHFQ7 天前
DNF 下载 RPM 依赖包及忽略特定依赖的方法
rpm·dnf
之歆2 个月前
RPM 包管理完全指南
rpm
virtualzzf2 个月前
OpenEuler 20.03构建zabbix8.0 rpm包
zabbix·openeuler·rpm·linxu
954L2 个月前
CentOs7执行yum update出现链接404问题
linux·centos·yum·vault
tianyuanwo2 个月前
Mock构建中RPM仓库校验和不匹配:深度解析与系统化解决方案
yum·rpm·checksum
muyan92 个月前
统信uos-server-20-1070e-arm64-20250704-1310 安装mysql-5.7.44
linux·mysql·yum·rpm·uos·统信
玉梅小洋2 个月前
CentOS :yum源配置及验证指南
linux·运维·centos·yum
hantoy3 个月前
Centos7 yum如何下载离线安装包?(详解)
yum·linux离线安装
晚风吹人醒.3 个月前
YUM仓库部署+PXE远程部署+ks无人值守,安装配置全流程讲解与展示
linux·运维·yum·dhcp·无人值守·tftp·ks
Tipriest_3 个月前
Debian 系与 RPM 系常用软件包查询命令/信息/列出已安装包/模糊查找等命令
运维·debian·rpm