活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS Stream Yum源使用教程从入门到精通的完整指南

SunJu_FaceMall

3万

主题

2945

科技点

3万

积分

执行版主

碾压王

积分
32874

塔罗立华奏

执行版主 发表于 2025-8-28 01:40:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 引言

CentOS Stream是CentOS项目的一个新方向,它位于Fedora和RHEL之间,作为一个滚动更新的发行版,为开发者提供了一个更接近RHEL未来开发内容的平台。Yum(Yellowdog Updater Modified)是CentOS Stream中默认的软件包管理器,它能够自动解决软件包依赖关系,使得软件的安装、更新和删除变得简单高效。

Yum源(Repository)是存储软件包和元数据的服务器,Yum通过访问这些源来获取软件包信息并进行安装。正确配置和使用Yum源对于系统管理和维护至关重要,它不仅影响软件安装的效率,还关系到系统的安全性和稳定性。

本教程将带您从基础概念开始,逐步深入到高级应用,全面掌握CentOS Stream中Yum源的使用技巧。

2. Yum基础概念

2.1 什么是Yum

Yum(Yellowdog Updater Modified)是一个基于RPM包管理的软件包管理器,它能够自动解决软件包之间的依赖关系。Yum通过访问配置好的软件仓库(Repository),自动下载并安装所需的软件包及其依赖项,大大简化了软件管理过程。

Yum的主要功能包括:

• 安装软件包
• 更新软件包
• 删除软件包
• 查询软件包信息
• 管理软件仓库

2.2 什么是Yum源

Yum源(Repository)是存储软件包和元数据的服务器或本地目录。每个Yum源都包含一个或多个软件包及其相关的元数据(如软件包信息、依赖关系等)。Yum通过读取这些元数据来了解可用的软件包,并处理软件包之间的依赖关系。

Yum源通常分为以下几种类型:

• 官方源:由发行版官方提供和维护的软件仓库
• 第三方源:由社区或第三方组织提供的软件仓库
• 本地源:在本地系统上创建的软件仓库

2.3 Yum的工作原理

Yum的工作原理可以概括为以下几个步骤:

1. 读取配置文件:Yum首先读取/etc/yum.conf和/etc/yum.repos.d/目录下的所有配置文件
2. 获取元数据:Yum从配置的软件仓库下载最新的元数据
3. 解析依赖关系:根据元数据解析软件包之间的依赖关系
4. 执行操作:根据用户请求执行安装、更新或删除操作
5. 清理缓存:操作完成后,Yum会清理不必要的缓存文件

3. CentOS Stream官方Yum源介绍

3.1 默认Yum源配置

在CentOS Stream中,Yum源的配置文件位于/etc/yum.repos.d/目录下。默认情况下,系统会包含以下几个主要的Yum源配置文件:

• centos.repo: 包含CentOS Stream的主要软件仓库
• epel.repo: Extra Packages for Enterprise Linux(EPEL)仓库,提供额外的软件包
• epel-testing.repo: EPEL测试仓库

让我们查看一下默认的CentOS Stream Yum源配置:
  1. cat /etc/yum.repos.d/centos.repo
复制代码

输出可能类似于:
  1. [centos-baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  7. [centos-appstream]
  8. name=CentOS Stream $releasever - AppStream
  9. mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=AppStream&infra=$infra
  10. gpgcheck=1
  11. enabled=1
  12. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  13. [centos-powertools]
  14. name=CentOS Stream $releasever - PowerTools
  15. mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=PowerTools&infra=$infra
  16. gpgcheck=1
  17. enabled=0
  18. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

3.2 CentOS Stream仓库类型

CentOS Stream提供以下几种主要的仓库类型:

1. BaseOS:提供核心的操作系统功能,是运行系统所需的基础软件包集合。
2. AppStream:提供应用程序和运行时环境,包括各种开发工具、数据库、Web服务器等。
3. PowerTools:提供开发者和系统管理员需要的额外工具和库。
4. Extras:提供额外的软件包,这些软件包可能不包括在主要仓库中。

每个仓库都有其特定的用途,用户可以根据需要启用或禁用特定的仓库。

3.3 Yum源配置文件格式

Yum源的配置文件通常采用INI格式,每个仓库配置以[repository_id]开头,后面跟着一系列的配置选项。常见的配置选项包括:

• name:仓库的描述名称
• baseurl:仓库的URL地址
• mirrorlist:镜像列表URL,Yum会从中选择最快的镜像
• enabled:是否启用此仓库(1表示启用,0表示禁用)
• gpgcheck:是否检查GPG签名(1表示检查,0表示不检查)
• gpgkey:GPG密钥的URL或文件路径
• exclude:要排除的软件包列表
• includepkgs:只包含的软件包列表

4. 配置和管理Yum源

4.1 查看当前系统中的Yum源

要查看当前系统中已配置的Yum源,可以使用以下命令:
  1. yum repolist
复制代码

这将列出所有已启用的Yum源及其状态:
  1. repo id                                repo name
  2. appstream                              CentOS Stream 9 - AppStream
  3. baseos                                 CentOS Stream 9 - BaseOS
  4. epel                                   Extra Packages for Enterprise Linux 9 - x86_64
  5. extras-common                          CentOS Stream 9 - Extras packages
复制代码

要查看所有已配置的Yum源(包括已禁用的),可以使用:
  1. yum repolist all
复制代码

4.2 添加新的Yum源

要添加新的Yum源,可以手动创建配置文件或使用yum-config-manager工具。

1. 在/etc/yum.repos.d/目录下创建一个新的.repo文件,例如custom.repo:
  1. vi /etc/yum.repos.d/custom.repo
复制代码

1. 添加以下内容:
  1. [custom-repo]
  2. name=My Custom Repository
  3. baseurl=http://example.com/repo/$releasever/$basearch
  4. enabled=1
  5. gpgcheck=0
复制代码

1. 保存文件并退出编辑器。

yum-config-manager是yum-utils包的一部分,如果尚未安装,可以使用以下命令安装:
  1. yum install yum-utils
复制代码

然后,使用yum-config-manager添加新的Yum源:
  1. yum-config-manager --add-repo http://example.com/repo/custom.repo
复制代码

4.3 启用和禁用Yum源

要临时启用或禁用Yum源,可以在Yum命令中使用--enablerepo或--disablerepo选项:
  1. # 临时启用一个仓库
  2. yum --enablerepo=epel-testing install package-name
  3. # 临时禁用一个仓库
  4. yum --disablerepo=epel install package-name
复制代码

要永久启用或禁用Yum源,可以编辑配置文件中的enabled选项,或使用yum-config-manager:
  1. # 永久启用一个仓库
  2. yum-config-manager --enable epel-testing
  3. # 永久禁用一个仓库
  4. yum-config-manager --disable epel-testing
复制代码

4.4 删除Yum源

要删除Yum源,只需删除对应的配置文件:
  1. rm /etc/yum.repos.d/custom.repo
复制代码

或者,可以使用yum-config-manager:
  1. yum-config-manager --disable custom-repo
复制代码

注意:yum-config-manager实际上不会删除配置文件,而是将enabled设置为0。

4.5 更新Yum源缓存

当添加或修改Yum源后,需要更新Yum缓存以确保Yum能够获取最新的软件包信息:
  1. yum makecache
复制代码

或者,可以清理所有缓存并重新生成:
  1. yum clean all
  2. yum makecache
复制代码

5. 常用Yum命令详解

5.1 安装软件包

使用Yum安装软件包非常简单,只需使用install命令:
  1. yum install package-name
复制代码

例如,安装Nginx Web服务器:
  1. yum install nginx
复制代码

如果要安装多个软件包,可以一次性指定:
  1. yum install nginx mysql php
复制代码

Yum会自动解决依赖关系并安装所需的额外软件包。

5.2 更新软件包

要更新系统中已安装的软件包,可以使用update命令:
  1. # 更新所有已安装的软件包
  2. yum update
  3. # 更新特定的软件包
  4. yum update package-name
  5. # 更新安全相关的软件包
  6. yum --security update
复制代码

5.3 删除软件包

要删除已安装的软件包,可以使用remove或erase命令:
  1. yum remove package-name
复制代码

或者:
  1. yum erase package-name
复制代码

Yum会提示确认删除操作,并显示将被删除的软件包列表。注意,删除某个软件包时,依赖该软件包的其他软件包也可能会被删除。

5.4 查询软件包信息

Yum提供了多种查询软件包信息的方式:
  1. # 搜索软件包
  2. yum search keyword
  3. # 查看软件包信息
  4. yum info package-name
  5. # 列出所有可用的软件包
  6. yum list available
  7. # 列出所有已安装的软件包
  8. yum list installed
  9. # 列出所有可更新和已安装的软件包
  10. yum list all
  11. # 查看特定软件包的文件列表
  12. yum provides package-name
  13. # 查看某个文件属于哪个软件包
  14. yum whatprovides filename
复制代码

例如,搜索包含”http”关键词的软件包:
  1. yum search http
复制代码

查看Nginx软件包的详细信息:
  1. yum info nginx
复制代码

5.5 软件包组管理

Yum还支持软件包组的管理,这使得安装相关功能的多个软件包变得更加方便:
  1. # 列出所有可用的软件包组
  2. yum groups list
  3. # 查看特定软件包组的详细信息
  4. yum groups info "Development Tools"
  5. # 安装软件包组
  6. yum groups install "Development Tools"
  7. # 更新软件包组
  8. yum groups update "Development Tools"
  9. # 删除软件包组
  10. yum groups remove "Development Tools"
复制代码

5.6 历史记录

Yum会记录所有执行的操作,可以通过history命令查看:
  1. # 查看Yum历史记录
  2. yum history list
  3. # 查看特定操作的详细信息
  4. yum history info ID
  5. # 撤销特定操作
  6. yum history undo ID
  7. # 重做特定操作
  8. yum history redo ID
复制代码

6. Yum高级功能

6.1 Yum插件

Yum支持各种插件来扩展其功能。插件通常位于/usr/lib/yum-plugins/目录下,配置文件位于/etc/yum/pluginconf.d/目录下。

一些常用的Yum插件包括:

• fastestmirror:自动选择最快的镜像
• priorities:设置仓库优先级
• protectbase:保护基础仓库不被第三方仓库覆盖
• security:安全更新管理

要启用或禁用插件,可以编辑/etc/yum.conf文件中的plugins选项:
  1. [main]
  2. plugins=1
复制代码

设置为1表示启用插件,设置为0表示禁用插件。

6.2 仓库优先级

使用priorities插件可以设置不同仓库的优先级,确保系统优先从特定仓库获取软件包。

首先,安装yum-plugin-priorities:
  1. yum install yum-plugin-priorities
复制代码

然后,在仓库配置文件中添加priority选项,数值越小优先级越高(1-99):
  1. [centos-baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  7. priority=1
复制代码

6.3 下载软件包但不安装

有时可能需要下载软件包但不安装,可以使用yumdownloader工具:
  1. # 安装yum-utils包(包含yumdownloader)
  2. yum install yum-utils
  3. # 下载软件包
  4. yumdownloader package-name
  5. # 下载软件包及其依赖
  6. yumdownloader --resolve package-name
复制代码

6.4 本地缓存管理

Yum会将下载的软件包和元数据存储在本地缓存中,通常位于/var/cache/yum/目录下。

管理Yum缓存的命令包括:
  1. # 清理所有缓存
  2. yum clean all
  3. # 清理软件包缓存
  4. yum clean packages
  5. # 清理元数据缓存
  6. yum clean metadata
  7. # 清理过期缓存
  8. yum clean expire-cache
  9. # 仅清理插件缓存
  10. yum clean plugins
  11. # 查看缓存占用空间
  12. du -sh /var/cache/yum/
复制代码

6.5 使用代理服务器

如果需要通过代理服务器访问网络,可以在/etc/yum.conf文件中配置代理设置:
  1. [main]
  2. proxy=http://proxy-server:port/
  3. proxy_username=username
  4. proxy_password=password
复制代码

或者,可以设置环境变量:
  1. export http_proxy="http://proxy-server:port/"
  2. export https_proxy="http://proxy-server:port/"
复制代码

7. 创建本地Yum源

7.1 为什么需要本地Yum源

创建本地Yum源有以下好处:

• 减少互联网带宽使用
• 提高软件包安装速度
• 在没有互联网连接的环境中安装软件
• 确保软件包版本的一致性
• 自定义软件包集合

7.2 使用createrepo创建本地Yum源

createrepo是创建本地Yum源的主要工具,首先需要安装它:
  1. yum install createrepo
复制代码

1. 创建一个目录来存储软件包:
  1. mkdir -p /var/www/html/repo
复制代码

1. 将RPM软件包复制到该目录:
  1. cp /path/to/rpms/*.rpm /var/www/html/repo/
复制代码

1. 使用createrepo创建仓库元数据:
  1. createrepo /var/www/html/repo/
复制代码

1. 创建Yum源配置文件:
  1. vi /etc/yum.repos.d/local.repo
复制代码

添加以下内容:
  1. [local-repo]
  2. name=Local Repository
  3. baseurl=file:///var/www/html/repo/
  4. enabled=1
  5. gpgcheck=0
复制代码

1. 更新Yum缓存:
  1. yum makecache
复制代码

如果要在网络中共享本地Yum源,可以使用Web服务器(如Nginx或Apache):

1. 安装Nginx:
  1. yum install nginx
  2. systemctl enable --now nginx
复制代码

1. 确保软件包目录位于Nginx的根目录下:
  1. mkdir -p /usr/share/nginx/html/repo
  2. cp /path/to/rpms/*.rpm /usr/share/nginx/html/repo/
  3. createrepo /usr/share/nginx/html/repo/
复制代码

1. 在客户端创建Yum源配置文件:
  1. vi /etc/yum.repos.d/network-local.repo
复制代码

添加以下内容:
  1. [network-local-repo]
  2. name=Network Local Repository
  3. baseurl=http://server-ip/repo/
  4. enabled=1
  5. gpgcheck=0
复制代码

1. 更新Yum缓存:
  1. yum makecache
复制代码

7.3 同步远程Yum源到本地

可以使用reposync工具将远程Yum源同步到本地:
  1. # 安装yum-utils包(包含reposync)
  2. yum install yum-utils
  3. # 同步整个仓库
  4. reposync -r centos-baseos -p /var/www/html/repo/
  5. # 同步多个仓库
  6. reposync -r centos-baseos -r centos-appstream -p /var/www/html/repo/
  7. # 同步最新版本的软件包
  8. reposync -n -r centos-baseos -p /var/www/html/repo/
复制代码

同步完成后,需要为每个仓库创建元数据:
  1. createrepo /var/www/html/repo/centos-baseos/
  2. createrepo /var/www/html/repo/centos-appstream/
复制代码

7.4 使用Yum源镜像工具

yum-utils包中还包含yum-mirror工具,可以用来镜像Yum源:
  1. # 镜像整个仓库
  2. yum-mirror -r centos-baseos /var/www/html/repo/
  3. # 镜像多个仓库
  4. yum-mirror -r centos-baseos -r centos-appstream /var/www/html/repo/
复制代码

8. 常见问题及解决方案

8.1 Yum源无法访问

问题现象:执行Yum命令时出现”Cannot retrieve repository metadata”或”Could not resolve host”等错误。

解决方案:

1. 检查网络连接:
  1. ping -c 4 mirror.centos.org
复制代码

1. 检查DNS配置:
  1. cat /etc/resolv.conf
复制代码

1. 检查Yum源配置:
  1. cat /etc/yum.repos.d/centos.repo
复制代码

1. 尝试使用其他镜像:
  1. yum --disablerepo=* --enablerepo=centos-baseos update
复制代码

1. 如果使用代理,确保代理设置正确:
  1. cat /etc/yum.conf | grep proxy
复制代码

8.2 GPG密钥错误

问题现象:执行Yum命令时出现”GPG key retrieval failed”或”Package is not signed”等错误。

解决方案:

1. 导入正确的GPG密钥:
  1. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

1. 临时禁用GPG检查(不推荐):
  1. yum --nogpgcheck install package-name
复制代码

1. 在仓库配置中禁用GPG检查(不推荐):
  1. [centos-baseos]
  2. ...
  3. gpgcheck=0
  4. ...
复制代码

8.3 依赖关系问题

问题现象:执行Yum命令时出现”Error: Package: package-name”或”Missing Dependency”等错误。

解决方案:

1. 清理Yum缓存并重试:
  1. yum clean all
  2. yum makecache
复制代码

1. 使用skip-broken选项跳过有问题的软件包:
  1. yum update --skip-broken
复制代码

1. 使用yum-complete-transaction完成未完成的事务:
  1. yum install yum-complete-transaction
  2. yum-complete-transaction --cleanup-only
复制代码

1. 检查是否有冲突的软件包:
  1. yum history list
复制代码

1. 尝试使用distro-sync同步软件包:
  1. yum distro-sync
复制代码

8.4 磁盘空间不足

问题现象:执行Yum命令时出现”Disk Requirements:“或”Not enough free disk space”等错误。

解决方案:

1. 检查磁盘空间使用情况:
  1. df -h
复制代码

1. 清理Yum缓存:
  1. yum clean all
复制代码

1. 删除不需要的软件包:
  1. package-cleanup --leaves
  2. package-cleanup --orphans
复制代码

1. 清理旧的内核:
  1. package-cleanup --oldkernels --count=2
复制代码

1. 扩展磁盘空间。

8.5 软件包冲突

问题现象:执行Yum命令时出现”file /path/to/file from install of package-name conflicts with file from package package-name2”等错误。

解决方案:

1. 确定冲突的软件包:
  1. rpm -qf /path/to/file
复制代码

1. 如果可能,卸载冲突的软件包:
  1. yum remove package-name2
复制代码

1. 使用--allowerasing选项允许Yum删除冲突的软件包:
  1. yum install package-name --allowerasing
复制代码

1. 使用rpm命令强制安装(不推荐):
  1. rpm -i --force package-name.rpm
复制代码

9. 最佳实践和安全建议

9.1 Yum源配置最佳实践

1. 使用官方源:尽可能使用CentOS Stream官方提供的Yum源,以确保软件包的稳定性和安全性。
2. 限制第三方源:谨慎添加第三方Yum源,并确保它们来自可信的来源。
3. 设置仓库优先级:使用yum-plugin-priorities设置仓库优先级,确保官方源优先于第三方源。
4. 定期更新:定期运行yum update以保持系统和软件包的最新状态。
5. 启用GPG检查:始终启用GPG检查以确保软件包的完整性和真实性。
6. 使用EPEL仓库:对于额外的软件包,使用EPEL(Extra Packages for Enterprise Linux)仓库。
7. 备份配置文件:在修改Yum源配置前,备份原始配置文件。

使用官方源:尽可能使用CentOS Stream官方提供的Yum源,以确保软件包的稳定性和安全性。

限制第三方源:谨慎添加第三方Yum源,并确保它们来自可信的来源。

设置仓库优先级:使用yum-plugin-priorities设置仓库优先级,确保官方源优先于第三方源。

定期更新:定期运行yum update以保持系统和软件包的最新状态。

启用GPG检查:始终启用GPG检查以确保软件包的完整性和真实性。

使用EPEL仓库:对于额外的软件包,使用EPEL(Extra Packages for Enterprise Linux)仓库。

备份配置文件:在修改Yum源配置前,备份原始配置文件。

9.2 安全建议

1. 最小化安装:仅安装必要的软件包,减少潜在的攻击面。
2. 定期安全更新:定期运行yum --security update以应用安全补丁。
3. 使用防火墙:配置防火墙规则,限制对Yum源的访问。
4. 审计Yum操作:定期审查Yum历史记录,检查异常操作:

最小化安装:仅安装必要的软件包,减少潜在的攻击面。

定期安全更新:定期运行yum --security update以应用安全补丁。

使用防火墙:配置防火墙规则,限制对Yum源的访问。

审计Yum操作:定期审查Yum历史记录,检查异常操作:
  1. yum history list all
复制代码

1. 隔离更新环境:在生产环境应用更新前,先在测试环境中进行测试。
2. 使用Yum安全插件:安装并使用yum-plugin-security插件来管理安全更新。
3. 限制Yum权限:限制普通用户使用Yum的权限,只允许授权用户执行软件包管理操作。

隔离更新环境:在生产环境应用更新前,先在测试环境中进行测试。

使用Yum安全插件:安装并使用yum-plugin-security插件来管理安全更新。

限制Yum权限:限制普通用户使用Yum的权限,只允许授权用户执行软件包管理操作。

9.3 性能优化

1. 使用最快的镜像:配置yum-plugin-fastestmirror插件以自动选择最快的镜像。
2. 保持缓存:保持Yum缓存以减少网络带宽使用,但定期清理过期缓存。
3. 并行下载:使用yum-plugin-fastestmirror和yum-plugin-axelget等插件启用并行下载。
4. 使用本地Yum源:在多台服务器环境中,设置本地Yum源以提高软件包安装速度。
5. 限制带宽使用:在/etc/yum.conf中设置throttle选项以限制Yum的带宽使用:

使用最快的镜像:配置yum-plugin-fastestmirror插件以自动选择最快的镜像。

保持缓存:保持Yum缓存以减少网络带宽使用,但定期清理过期缓存。

并行下载:使用yum-plugin-fastestmirror和yum-plugin-axelget等插件启用并行下载。

使用本地Yum源:在多台服务器环境中,设置本地Yum源以提高软件包安装速度。

限制带宽使用:在/etc/yum.conf中设置throttle选项以限制Yum的带宽使用:
  1. [main]
  2. throttle=50k
复制代码

10. 总结

本教程全面介绍了CentOS Stream中Yum源的使用方法,从基础概念到高级应用,涵盖了Yum源的配置、管理、故障排除和最佳实践。通过掌握这些知识,您可以有效地管理CentOS Stream系统中的软件包,确保系统的稳定性、安全性和性能。

Yum作为CentOS Stream中强大的软件包管理工具,其正确使用对于系统管理员至关重要。无论是日常的系统维护,还是复杂的环境部署,Yum都能提供高效、可靠的软件包管理解决方案。

希望本教程能够帮助您更好地理解和使用CentOS Stream中的Yum源,为您的系统管理工作提供有力支持。随着技术的不断发展,Yum和其替代品DNF也在不断演进,持续学习和实践将使您始终保持在这一领域的专业水平。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则