一、YUM 软件安装流程

一次完整的 yum install -y wget 安装流程,大致可以分为以下几个步骤:

1、运行 yum install -y wget 命令。 2、解析 wget 软件包是否存在依赖。 3、yum 根据本地配置的 yum 源地址发起请求,获取目标软件包及其依赖信息。 4、如果仓库中存在对应软件,则把相关 rpm 包下载到 yum 缓存目录。 5、软件包和依赖下载完成后开始安装。 6、安装完成后,默认会删除刚刚下载的 rpm 缓存包。

二、yum 源配置

2.1 什么是 yum 源

yum 源本质上是存放软件包的仓库地址,配置目录通常位于:

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

2.2 为什么要配置 yum 源

配置 yum 源的常见原因有两个:

  • 下载速度更快。
  • 系统默认 yum 源无法满足实际需求,例如默认仓库里没有需要的软件包。

在虚拟机、私有云、物理服务器中,经常需要手动配置 yum 源;而在部分公有云环境中,系统镜像通常已经帮你配置好了可用镜像源。

2.3 一键配置为阿里云的 yum 源

先查看当前系统正在使用的 yum 源列表:

$ yum repolist

2.3.1 配置 CentOS 7 默认源为阿里云源

先备份原始配置:

$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新的阿里云 CentOS 源配置:

$ wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

或者使用 curl

$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

2.3.2 增加阿里云 EPEL 源

如果之前配置过其他 EPEL 源,可以先备份:

$ mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
$ mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

下载新的 EPEL repo 文件:

$ wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

2.4 yum 源配置基础模板

下面是一个基本的 yum 源配置模板:

[repository_name]
name=Repository Name
baseurl=http://example.com/yum/repo/
enabled=1
gpgcheck=0
gpgkey=http://example.com/RPM-GPG-KEY

模板中的关键字段含义如下:

  • [repository_name]:仓库标识名称。
  • name:仓库说明。
  • baseurl:仓库地址,通常需要确保该地址下存在 repodata 目录。
  • enabled:是否启用该仓库,1 表示启用,0 表示禁用。
  • gpgcheck:是否开启 GPG 校验。
  • gpgkey:GPG 密钥地址,用于校验仓库中的软件包。

三、yum 源配置文件详解

下面以 cat /etc/yum.repos.d/CentOS-Base.repo 的一段内容为例:

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

各字段说明如下:

配置项 说明
[base] yum 源名称
name= yum 源详细说明
failovermethod= 可选项;若上面的地址失败,则尝试后备地址
baseurl= yum 源核心地址,打开后应能看到 repodata 目录
enabled=1 是否启用该 yum 源;默认通常为开启
gpgcheck=1 是否启用 GPG 检查;自建仓库时可根据需要关闭
gpgkey= 用于验证软件包的密钥地址;若关闭校验,可不配置

四、yum 命令配置文件

yum 命令自身也有配置文件,默认位于:

/etc/yum.conf

常见内容如下:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

在正式环境中通常很少修改这个文件,不过有几个参数需要了解:

配置项 说明
keepcache= 0 表示关闭缓存,安装后自动删除 rpm 包;1 表示保留缓存
cachedir yum 下载软件包的缓存目录,通常位于 /var/cache/yum/...
logfile yum 日志文件,通常为 /var/log/yum.log

五、yum 常用命令详解

从增、删、改、查角度看,常见 yum 命令如下:

yum 命令选项 命令说明
yum install -y bash-completion bash-completion-extras 安装命令补全工具
yum install -y 软件包 安装软件包,并自动处理依赖
yum reinstall -y 软件包 重新安装软件包
yum provides 命令或文件 根据命令或文件反查软件包
yum search all 命令或文件 搜索软件包
yum repolist 查看 yum 源信息
yum list 查看仓库中的软件包列表
yum remove 软件包 删除软件包,通常会一起处理依赖
yum clean all 清空缓存,自建 yum 仓库时经常会用到
yum update / yum upgrade 更新软件包

5.1 增加:安装

安装 tree 软件包:

$ yum install -y tree

重新安装 tree 软件包:

$ yum reinstall -y tree

5.2 查看:检查与搜索

查看 tree 命令属于哪个软件包:

$ yum provides tree

搜索与 tree 相关的软件包:

$ yum search all tree

查看 yum 源信息:

$ yum repolist

查看所有 yum 仓库中的软件包:

$ yum list

5.3 改:升级

升级软件包:

$ yum update

或者:

$ yum upgrade

5.4 删除

删除 tree 软件包,并一并删除相关依赖:

$ yum remove tree

如果只想删除软件包本身,不想连带处理依赖,可以使用 rpm -e

$ rpm -e tree-1.6.0-10.el7.x86_64

六、小结

学习 YUM 的关键,不只是记命令,还要理解三件事:

  • 软件从哪里来,也就是仓库和 repo 文件怎么配置。
  • 软件安装时发生了什么,也就是依赖解析、下载和缓存流程。
  • 出问题时去哪里看,也就是 repolistyum.conf、缓存目录和日志文件。