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)会很快上手。
相关推荐
Tipriest_14 小时前
Linux rpm 系和 debian 系发展史,相同,不同点详细介绍
linux·运维·debian·rpm
tianyuanwo3 天前
RPM打包宏定义配置完全指南
rpm·宏定义配置
遇见火星6 天前
Linux运维:RPM包配置管理指南
linux·运维·服务器·rpm
HunterMichaelG9 天前
如何在RHEL系Linux上创建一个本地 YUM 仓库来管理 HAProxy 软件及其依赖项?
yum·rpm
Asurplus9 天前
Centos7安装Git环境
git·centos·yum·dnf
Asurplus9 天前
Centos7安装Maven环境
java·centos·maven·apache·yum
tianyuanwo13 天前
RPM数据库锁竞争:原理、诊断与根治方案
数据库·rpm·bdb·命令挂起
txzz888813 天前
CentOS-Stream-10 YUM本地仓配置
linux·运维·centos·yum·yum本地仓配置
wxh_无香花自开14 天前
Linux 笔记:rpm命令
linux·运维·笔记·rpm