在 Linux 系统中安装与使用 YUM:详细指南

YUM(Yellowdog Updater Modified)是一款基于 RPM(Red Hat Package Manager)的包管理工具,主要用于 Red Hat 系 Linux 发行版(如 RHEL、CentOS、Fedora 等)。它能够自动化处理软件包的安装、更新、卸载,并解决依赖关系,极大简化了 Linux 系统的软件管理流程。尽管 newer 发行版(如 Fedora 22+、RHEL 8+)已逐渐采用 DNF(YUM 的继任者)作为默认包管理器,但 YUM 在 CentOS 7、RHEL 7 等经典系统中仍被广泛使用。

本文将详细介绍 YUM 的安装流程、验证方法、基础用法、常见实践与最佳实践,并提供 troubleshooting 指南,帮助用户快速掌握 YUM 的核心技能。

目录#

  1. 前提条件
  2. 检查 YUM 是否已安装
  3. YUM 的安装步骤
  4. 验证 YUM 安装
  5. YUM 基础用法示例
  6. 常见实践
  7. 最佳实践
  8. 故障排除
  9. 参考资料

1. 前提条件#

在安装 YUM 前,请确保系统满足以下条件:

  • 兼容的 Linux 发行版:YUM 适用于 Red Hat 系系统,如 CentOS 6/7、RHEL 6/7、Oracle Linux 6/7 等。Fedora 21 及更早版本也默认使用 YUM( newer 版本使用 DNF)。
  • ** root 权限**:安装和配置 YUM 需要管理员权限,建议使用 sudo 或直接切换至 root 用户。
  • 网络连接:需联网下载 YUM 相关包及后续软件安装(离线环境需手动准备 RPM 包)。
  • 基础工具:系统需已安装 rpm 命令(RPM 包管理工具),用于手动安装 YUM 依赖包。

2. 检查 YUM 是否已安装#

多数 Red Hat 系系统默认预装 YUM,可通过以下命令检查是否已安装:

# 查看 YUM 版本
yum --version
 
# 或检查 YUM 可执行文件路径
which yum

若输出类似以下内容,说明 YUM 已安装:

3.4.3
  Installed: rpm-4.11.3-48.el7_9.x86_64 at 2023-01-01 10:00
  Group: System Environment/Base

若提示 command not found,则需手动安装 YUM。

3. YUM 的安装步骤#

若系统中未预装 YUM,需通过 rpm 命令手动安装其依赖包。以下以 CentOS 7 为例,演示安装流程。

3.1 下载 YUM 依赖包#

YUM 的核心依赖包包括:

  • yum:YUM 主程序包;
  • yum-metadata-parser:元数据解析工具(YUM 依赖关系处理的基础);
  • rpm-python:Python 与 RPM 的接口(YUM 基于 Python 开发);
  • yum-plugin-fastestmirror(可选):自动选择最快镜像源的插件。

可从 CentOS 官方镜像站下载对应版本的 RPM 包,例如:

# 创建临时目录存放 RPM 包
mkdir -p /tmp/yum-install && cd /tmp/yum-install
 
# 下载依赖包(以 CentOS 7 x86_64 为例,版本号可能因系统更新变化,需确认最新版本)
wget http://vault.centos.org/7.9.2009/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://vault.centos.org/7.9.2009/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://vault.centos.org/7.9.2009/os/x86_64/Packages/rpm-python-4.11.3-48.el7_9.x86_64.rpm
wget http://vault.centos.org/7.9.2009/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm

注意:若系统架构为 i386aarch64,需替换下载链接中的 x86_64 为对应架构。

3.2 安装 RPM 包#

使用 rpm -ivh 命令安装下载的依赖包(需按依赖顺序安装,通常先安装 rpm-pythonyum-metadata-parser):

# 安装 rpm-python(若已安装可跳过)
rpm -ivh rpm-python-4.11.3-48.el7_9.x86_64.rpm
 
# 安装元数据解析器
rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
 
# 安装 YUM 主程序及插件
rpm -ivh yum-3.4.3-168.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm

若提示依赖缺失(如 python-urlgrabber),需先下载并安装对应依赖包(可通过 CentOS 镜像站 搜索缺失包名)。

3.3 配置 YUM 仓库(Repo)#

YUM 依赖 仓库配置文件(Repo File) 从指定源拉取软件包。默认情况下,CentOS/RHEL 系统的仓库配置文件位于 /etc/yum.repos.d/,例如 CentOS-Base.repo

若该目录下无配置文件,需手动创建或下载官方 Repo 文件:

# 下载 CentOS 7 基础仓库配置(以阿里云镜像为例)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 
# 清除旧缓存并生成新缓存
yum clean all && yum makecache

4. 验证 YUM 安装#

安装完成后,通过以下方式验证 YUM 是否正常工作:

4.1 检查版本#

yum --version

输出示例(版本号可能因系统而异):

3.4.3
  Installed: rpm-4.11.3-48.el7_9.x86_64 at 2023-01-01 10:00
  Built    : CentOS BuildSystem <http://bugs.centos.org> at 2022-05-10 15:30

4.2 列出可用仓库#

yum repolist

若输出类似以下内容,说明仓库配置正常:

repo id           repo name                                   status
base/7/x86_64     CentOS-7 - Base - mirrors.aliyun.com        10,072
extras/7/x86_64   CentOS-7 - Extras - mirrors.aliyun.com       515
updates/7/x86_64  CentOS-7 - Updates - mirrors.aliyun.com     4,126
repolist: 14,713

5. YUM 基础用法示例#

掌握以下基础命令,即可满足日常软件管理需求:

5.1 安装软件包#

# 安装指定包(如 httpd)
yum install httpd
 
# 安装多个包
yum install httpd mysql-server
 
# 强制安装(忽略冲突,谨慎使用)
yum install -y --skip-broken httpd
  • -y:自动确认安装(无需手动输入 y);
  • --skip-broken:跳过无法解决依赖的包。

5.2 更新软件包#

# 更新单个包
yum update httpd
 
# 更新所有已安装包(含内核,谨慎!)
yum update
 
# 仅更新系统组件,不更新内核
yum --exclude=kernel* update

5.3 卸载软件包#

# 卸载包(保留配置文件)
yum remove httpd
 
# 彻底删除包及配置文件(需手动确认)
yum erase httpd

5.4 搜索与查询包#

# 搜索包(按名称或描述)
yum search "web server"  # 搜索与 "web server" 相关的包
yum search httpd         # 精确搜索包名含 "httpd" 的包
 
# 查看包详情(版本、依赖、描述等)
yum info httpd
 
# 列出已安装的包
yum list installed | grep httpd

5.5 仓库与缓存管理#

# 列出所有启用的仓库
yum repolist enabled
 
# 清除缓存(解决仓库配置更新后不生效问题)
yum clean all
 
# 生成新缓存(加快后续查询速度)
yum makecache

6. 常见实践#

6.1 定期更新系统#

保持系统软件包最新是安全最佳实践:

# 每周执行一次系统更新
yum update -y

6.2 安装开发工具包#

通过 YUM 快速安装编译工具链:

yum groupinstall "Development Tools"  # 安装 GCC、Make 等开发工具

6.3 启用/禁用仓库#

临时启用某个仓库安装包:

# 从 epel 仓库安装包(需先启用 epel 仓库)
yum --enablerepo=epel install nginx
 
# 禁用某个仓库(临时)
yum --disablerepo=base install httpd

7. 最佳实践#

7.1 避免盲目执行 yum update -y#

yum update -y 会更新所有包(包括内核),可能导致服务兼容性问题(如数据库版本升级)。建议:

  • 生产环境优先更新单个关键包(如 yum update openssl);
  • 更新前备份数据,并确认业务兼容性。

7.2 锁定包版本#

防止特定包被意外更新:

# 安装版本锁定工具
yum install yum-plugin-versionlock
 
# 锁定 httpd 版本
yum versionlock httpd-2.4.6-97.el7.centos.x86_64
 
# 查看已锁定的包
yum versionlock list

7.3 验证仓库 GPG 签名#

通过 GPG 密钥验证包完整性,防止恶意软件:

# 安装包时自动验证 GPG 签名(默认启用)
yum install --nogpgcheck httpd  # 仅在信任源时临时禁用验证

确保 Repo 文件中 gpgcheck=1(启用签名验证),并配置 gpgkey 路径(如 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7)。

7.4 定期清理缓存#

缓存文件(位于 /var/cache/yum/)会占用磁盘空间,建议定期清理:

yum clean all && yum makecache  # 清理旧缓存并生成新缓存

8. 故障排除#

8.1 问题:No package xxx available(找不到包)#

原因:仓库中无该包,或仓库未启用。
解决

  1. 检查仓库是否启用:yum repolist enabled
  2. 搜索包是否存在于仓库:yum search xxx
  3. 启用额外仓库(如 EPEL):yum install epel-release

8.2 问题:Error: Package: xxx requires yyy(依赖冲突)#

原因:依赖包版本不匹配或缺失。
解决

  1. 手动安装缺失依赖:yum install yyy
  2. 使用 yum deplist xxx 查看完整依赖链;
  3. 尝试 yum install --skip-broken xxx 跳过冲突依赖(谨慎)。

8.3 问题:GPG key retrieval failed(GPG 密钥错误)#

原因:仓库 GPG 密钥未导入或已过期。
解决

# 手动导入 GPG 密钥(以 CentOS 7 为例)
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
# 或修改 Repo 文件,临时禁用 GPG 验证(不推荐)
sed -i 's/gpgcheck=1/gpgcheck=0/' /etc/yum.repos.d/CentOS-Base.repo

8.4 问题:Could not resolve host(无法解析仓库域名)#

原因:DNS 配置错误或网络不通。
解决

  1. 检查网络连通性:ping mirrors.aliyun.com
  2. 配置 DNS(如修改 /etc/resolv.conf 添加 nameserver 8.8.8.8)。

9. 参考资料#


通过本文,您已掌握 YUM 的安装、配置与核心用法。合理使用 YUM 可显著提升 Linux 系统管理效率,建议结合实际场景灵活运用最佳实践,确保系统稳定与安全。