简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

02-12 00:01
通知:春节期间开放常规注册【2026-2-15 00:00】至【2026-2-17 00:00】(UTC+8)
02-12 00:00
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS Stream滚动更新模式下Yum源管理权威指南从基础配置到高级优化助你轻松解决软件包依赖问题提升系统管理效率打造稳定高效的企业级服务器运行环境

SunJu_FaceMall

3万

主题

444

科技点

3万

积分

大区版主

碾压王

积分
32178

立华奏

发表于 2025-10-5 00:40:10 | 显示全部楼层 |阅读模式 [标记阅至此楼]

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

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

x
1. CentOS Stream与滚动更新模式概述

CentOS Stream是Red Hat Enterprise Linux (RHEL)的上游开发平台,它处于Fedora和RHEL之间的位置,提供了一个滚动更新的发行版。与传统的CentOS版本不同,CentOS Stream采用持续交付模式,使用户能够提前接触到即将在RHEL中发布的更新和功能。

1.1 CentOS Stream的特点

• 滚动更新模式:CentOS Stream采用滚动更新模式,持续提供最新的软件包更新,而不是传统的固定版本发布周期。
• RHEL上游:作为RHEL的上游,CentOS Stream中的更新最终会进入RHEL的稳定版本。
• 社区与企业结合:结合了社区驱动的创新和企业级的稳定性。
• 频繁更新:软件包更新更加频繁,但经过严格测试以确保稳定性。

1.2 滚动更新模式的优势与挑战

优势:

• 获取最新的功能和安全更新
• 提前适应即将在RHEL中出现的变更
• 更好的硬件支持和新特性

挑战:

• 需要更加谨慎的更新管理
• 可能面临更多兼容性问题
• 对Yum源管理提出了更高要求

2. Yum源管理基础

Yum(Yellowdog Updater, Modified)是RHEL系列发行版中使用的软件包管理器,它解决了软件包依赖关系问题,使系统管理员能够轻松安装、更新和删除软件包。

2.1 Yum源的基本概念

Yum源(Repository)是存储软件包及其元数据的服务器,Yum通过这些源来获取软件包和解决依赖关系。在CentOS Stream中,正确配置Yum源对于系统稳定性和安全性至关重要。

2.2 Yum源的类型

1. 官方源:由CentOS官方维护的软件源,包括BaseOS、AppStream、Extras等。
2. 第三方源:如EPEL(Extra Packages for Enterprise Linux)、RPM Fusion等。
3. 本地源:本地网络或本地文件系统上的软件源。
4. 自定义源:根据特定需求创建的软件源。

2.3 Yum配置文件

Yum的主要配置文件位于/etc/yum.conf,而各个源的具体配置则位于/etc/yum.repos.d/目录下,以.repo为扩展名。

下面是一个基本的Yum配置文件示例:
  1. [main]
  2. cachedir=/var/cache/yum/$basearch/$releasever
  3. keepcache=0
  4. debuglevel=2
  5. logfile=/var/log/yum.log
  6. exactarch=1
  7. obsoletes=1
  8. gpgcheck=1
  9. plugins=1
  10. installonly_limit=3
  11. # 以下是CentOS Stream 9的默认源配置示例
  12. [baseos]
  13. name=CentOS Stream $releasever - BaseOS
  14. metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
  15. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  16. gpgcheck=1
  17. repo_gpgcheck=0
  18. metadata_expire=6h
  19. enabled=1
  20. [appstream]
  21. name=CentOS Stream $releasever - AppStream
  22. metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-$stream&arch=$basearch&protocol=https,http
  23. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  24. gpgcheck=1
  25. repo_gpgcheck=0
  26. metadata_expire=6h
  27. enabled=1
  28. [extras-common]
  29. name=CentOS Stream $releasever - Extras common packages
  30. metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http
  31. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  32. gpgcheck=1
  33. repo_gpgcheck=0
  34. metadata_expire=6h
  35. enabled=1
复制代码

3. Yum源的基础配置

3.1 查看当前配置的Yum源

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

此命令会列出所有已启用的Yum源及其状态。若要查看包括已禁用在内的所有源,可以使用:
  1. yum repolist all
复制代码

3.2 添加官方Yum源

CentOS Stream默认已经配置了官方Yum源,但如果需要手动添加或修改,可以按照以下步骤操作:

1. 创建或编辑.repo文件:
  1. vi /etc/yum.repos.d/centos-stream.repo
复制代码

1. 添加以下内容(以CentOS Stream 9为例):
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=http://mirror.centos.org/centos/9-stream/BaseOS/$basearch/os/
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  7. [appstream]
  8. name=CentOS Stream $releasever - AppStream
  9. baseurl=http://mirror.centos.org/centos/9-stream/AppStream/$basearch/os/
  10. gpgcheck=1
  11. enabled=1
  12. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

3.3 添加第三方Yum源

EPEL(Extra Packages for Enterprise Linux)是由Fedora社区维护的企业版Linux额外软件包仓库,提供了许多RHEL及其衍生版中没有的软件包。

安装EPEL源:
  1. # CentOS Stream 8
  2. dnf install epel-release
  3. # CentOS Stream 9
  4. dnf install epel-next-release
复制代码

RPM Fusion提供了RHEL及其衍生版中因专利或法律原因而无法包含的软件包。

安装RPM Fusion源:
  1. # 安装RPM Fusion免费源
  2. dnf install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
  3. # 安装RPM Fusion非免费源
  4. dnf install --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
复制代码

3.4 使用本地Yum源

在企业环境中,为了节省带宽和提高更新速度,通常会设置本地Yum源。

1. 安装必要的软件包:
  1. dnf install createrepo httpd
复制代码

1. 创建存储目录并下载软件包:
  1. mkdir -p /var/www/html/centos/9-stream/BaseOS/x86_64/os/
  2. mkdir -p /var/www/html/centos/9-stream/AppStream/x86_64/os/
  3. # 使用rsync同步官方源
  4. rsync -avz rsync://mirror.centos.org/centos/9-stream/BaseOS/x86_64/os/ /var/www/html/centos/9-stream/BaseOS/x86_64/os/
  5. rsync -avz rsync://mirror.centos.org/centos/9-stream/AppStream/x86_64/os/ /var/www/html/centos/9-stream/AppStream/x86_64/os/
复制代码

1. 创建仓库元数据:
  1. createrepo /var/www/html/centos/9-stream/BaseOS/x86_64/os/
  2. createrepo /var/www/html/centos/9-stream/AppStream/x86_64/os/
复制代码

1. 启动HTTP服务:
  1. systemctl enable --now httpd
复制代码

在客户端系统中,创建或编辑.repo文件:
  1. vi /etc/yum.repos.d/local-centos-stream.repo
复制代码

添加以下内容:
  1. [local-baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=http://your-server-ip/centos/9-stream/BaseOS/$basearch/os/
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  7. [local-appstream]
  8. name=CentOS Stream $releasever - AppStream
  9. baseurl=http://your-server-ip/centos/9-stream/AppStream/$basearch/os/
  10. gpgcheck=1
  11. enabled=1
  12. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

4. Yum源的高级优化

4.1 Yum缓存管理

Yum缓存可以提高软件包安装和更新的速度,但也会占用磁盘空间。合理管理Yum缓存对于系统性能至关重要。

编辑/etc/yum.conf文件,调整缓存设置:
  1. [main]
  2. cachedir=/var/cache/yum/$basearch/$releasever
  3. keepcache=1  # 保留已下载的软件包
  4. metadata_expire=6h  # 元数据过期时间
复制代码
  1. # 清理所有缓存
  2. yum clean all
  3. # 仅清理过期缓存
  4. yum clean expire-cache
  5. # 清理软件包缓存
  6. yum clean packages
  7. # 清理元数据缓存
  8. yum clean metadata
复制代码

为了在系统重启后保留Yum缓存,可以创建一个systemd服务:
  1. vi /etc/systemd/system/yum-persistent-cache.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=Preserve Yum cache across reboots
  3. After=network.target
  4. [Service]
  5. Type=oneshot
  6. ExecStart=/usr/bin/touch /var/cache/yum/timestamp
  7. RemainAfterExit=yes
  8. [Install]
  9. WantedBy=multi-user.target
复制代码

启用服务:
  1. systemctl enable yum-persistent-cache.service
  2. systemctl start yum-persistent-cache.service
复制代码

4.2 Yum源优先级管理

在企业环境中,可能需要配置多个Yum源,并设置它们的优先级,以确保从特定的源获取软件包。
  1. dnf install yum-plugin-priorities
复制代码

编辑.repo文件,为每个源添加priority参数,数值越小优先级越高(1为最高优先级):
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=http://mirror.centos.org/centos/9-stream/BaseOS/$basearch/os/
  4. gpgcheck=1
  5. enabled=1
  6. priority=1
  7. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  8. [epel]
  9. name=Extra Packages for Enterprise Linux $releasever - $basearch
  10. baseurl=http://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch
  11. enabled=1
  12. gpgcheck=1
  13. priority=10
  14. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
复制代码

4.3 使用Yum插件增强功能

Yum插件可以扩展Yum的功能,提高系统管理效率。
  1. dnf install yum-plugin-fastestmirror yum-plugin-security yum-plugin-versionlock
复制代码

fastestmirror插件会自动选择最快的镜像源,提高下载速度。

编辑/etc/yum/pluginconf.d/fastestmirror.conf文件:
  1. [main]
  2. enabled=1
  3. verbose=0
  4. always_print_best_host = true
  5. socket_timeout=3
  6. hostfilepath=/var/cache/yum/timedhosts.txt
  7. maxhostfileage=10
  8. maxthreads=15
  9. #exclude=.gov, facebook
  10. #include_only=.nl,.de,.uk,.ie
复制代码

security插件可以帮助识别和应用安全更新。
  1. # 检查安全更新
  2. yum --security check-update
  3. # 安装安全更新
  4. yum --security update
  5. # 列出安全更新
  6. yum updateinfo list security
复制代码

versionlock插件可以锁定特定软件包的版本,防止意外更新。
  1. # 锁定软件包版本
  2. yum versionlock add nginx-1.20.1-1.el9
  3. # 查看已锁定的软件包
  4. yum versionlock list
  5. # 解锁软件包
  6. yum versionlock delete nginx-1.20.1-1.el9
  7. # 清除所有锁定
  8. yum versionlock clear
复制代码

4.4 Yum源镜像管理

在企业环境中,使用镜像可以减轻外部源的负载,提高内部网络访问速度。
  1. # 安装yum-utils
  2. dnf install yum-utils
  3. # 同步BaseOS源
  4. reposync --gpgcheck -l --repoid=baseos --download_path=/var/www/html/centos/9-stream/
  5. # 同步AppStream源
  6. reposync --gpgcheck -l --repoid=appstream --download_path=/var/www/html/centos/9-stream/
  7. # 同步所有启用的源
  8. reposync --gpgcheck -l --download_path=/var/www/html/centos/9-stream/
复制代码

创建一个脚本/usr/local/bin/sync-repos.sh:
  1. #!/bin/bash
  2. # 定义日志文件
  3. LOG_FILE="/var/log/reposync.log"
  4. # 定义同步目录
  5. SYNC_DIR="/var/www/html/centos/9-stream"
  6. # 记录开始时间
  7. echo "===== Starting reposync at $(date) =====" >> $LOG_FILE
  8. # 同步BaseOS源
  9. echo "Syncing BaseOS repository..." >> $LOG_FILE
  10. reposync --gpgcheck -l --repoid=baseos --download_path=$SYNC_DIR >> $LOG_FILE 2>&1
  11. # 同步AppStream源
  12. echo "Syncing AppStream repository..." >> $LOG_FILE
  13. reposync --gpgcheck -l --repoid=appstream --download_path=$SYNC_DIR >> $LOG_FILE 2>&1
  14. # 更新仓库元数据
  15. echo "Updating repository metadata..." >> $LOG_FILE
  16. createrepo --update $SYNC_DIR/BaseOS/x86_64/os/ >> $LOG_FILE 2>&1
  17. createrepo --update $SYNC_DIR/AppStream/x86_64/os/ >> $LOG_FILE 2>&1
  18. # 记录完成时间
  19. echo "===== Completed reposync at $(date) =====" >> $LOG_FILE
复制代码

设置脚本可执行权限:
  1. chmod +x /usr/local/bin/sync-repos.sh
复制代码

创建cron任务:
  1. crontab -e
复制代码

添加以下内容,设置每天凌晨2点同步Yum源:
  1. 0 2 * * * /usr/local/bin/sync-repos.sh
复制代码

5. 解决软件包依赖问题

在CentOS Stream的滚动更新模式下,软件包依赖问题可能会更加频繁。本节将介绍如何有效解决这些问题。

5.1 理解软件包依赖关系

软件包依赖关系是指一个软件包需要其他软件包或库才能正常运行的情况。依赖关系分为几种类型:

• 依赖(Requires):软件包正常运行所必需的其他软件包。
• 推荐(Recommends):软件包推荐安装的其他软件包,但不是必需的。
• 建议(Suggests):软件包建议安装的其他软件包,可以增强功能。
• 冲突(Conflicts):与软件包不兼容的其他软件包。

5.2 常见依赖问题及解决方案

当安装软件包时,如果系统提示缺少依赖,可以使用以下方法解决:
  1. # 尝试自动解决依赖
  2. yum install package-name
  3. # 如果自动解决失败,可以手动安装依赖
  4. yum provides dependency-name
  5. yum install dependency-package
  6. # 使用--skip-broken选项跳过有问题的软件包
  7. yum update --skip-broken
复制代码

当两个软件包之间存在冲突时,可以尝试以下方法:
  1. # 查看冲突详情
  2. yum install package-name
  3. # 使用--allowerasing选项允许移除冲突的软件包
  4. yum install package-name --allowerasing
  5. # 使用--skip-broken选项跳过有问题的软件包
  6. yum update --skip-broken
复制代码

在滚动更新模式下,软件包版本不匹配是常见问题:
  1. # 查看软件包版本
  2. yum list installed package-name
  3. # 查看可用的版本
  4. yum --showduplicates list package-name
  5. # 安装特定版本
  6. yum install package-name-version
  7. # 使用distro-sync同步到发行版版本
  8. yum distro-sync
复制代码

5.3 使用Yum历史记录解决问题

Yum的历史记录功能可以帮助我们回滚有问题的更新:
  1. # 查看Yum历史记录
  2. yum history list
  3. # 查看特定事务的详情
  4. yum history info ID
  5. # 撤销特定事务
  6. yum history undo ID
  7. # 重做特定事务
  8. yum history redo ID
复制代码

5.4 使用Yum调试工具
  1. # 安装yum-deprecated
  2. dnf install yum-deprecated
  3. # 使用yum-deprecated解决依赖问题
  4. yum-deprecated resolve-deps package-name
复制代码
  1. # 安装yum-utils
  2. dnf install yum-utils
  3. # 查询软件包的依赖关系
  4. repoquery --requires package-name
  5. # 查询哪些软件包依赖特定文件
  6. repoquery --whatprovides /path/to/file
  7. # 查询软件包的详细信息
  8. repoquery -i package-name
复制代码

5.5 创建本地依赖缓存

在企业环境中,可以创建本地依赖缓存,以减少对外部源的依赖:
  1. # 安装必要的软件包
  2. dnf install createrepo yum-utils
  3. # 创建依赖缓存目录
  4. mkdir -p /var/www/html/deps-cache
  5. # 下载软件包及其依赖
  6. yumdownloader --resolve --destdir=/var/www/html/deps-cache package-name
  7. # 创建仓库元数据
  8. createrepo /var/www/html/deps-cache
  9. # 配置本地依赖缓存源
  10. cat > /etc/yum.repos.d/deps-cache.repo << EOF
  11. [deps-cache]
  12. name=Local Dependencies Cache
  13. baseurl=file:///var/www/html/deps-cache
  14. enabled=1
  15. gpgcheck=0
  16. priority=1
  17. EOF
复制代码

6. 提升系统管理效率

6.1 使用Yum自动化脚本

创建一个脚本/usr/local/bin/bulk-install.sh:
  1. #!/bin/bash
  2. # 软件包列表
  3. PACKAGES=(
  4.     "nginx"
  5.     "mariadb-server"
  6.     "php-fpm"
  7.     "redis"
  8.     "python3"
  9. )
  10. # 日志文件
  11. LOG_FILE="/var/log/bulk-install.log"
  12. # 记录开始时间
  13. echo "===== Starting bulk package installation at $(date) =====" >> $LOG_FILE
  14. # 安装软件包
  15. for package in "${PACKAGES[@]}"; do
  16.     echo "Installing $package..." >> $LOG_FILE
  17.     yum install -y $package >> $LOG_FILE 2>&1
  18.     if [ $? -eq 0 ]; then
  19.         echo "Successfully installed $package" >> $LOG_FILE
  20.     else
  21.         echo "Failed to install $package" >> $LOG_FILE
  22.     fi
  23. done
  24. # 记录完成时间
  25. echo "===== Completed bulk package installation at $(date) =====" >> $LOG_FILE
复制代码

设置脚本可执行权限:
  1. chmod +x /usr/local/bin/bulk-install.sh
复制代码

创建一个脚本/usr/local/bin/auto-update.sh:
  1. #!/bin/bash
  2. # 日志文件
  3. LOG_FILE="/var/log/auto-update.log"
  4. # 邮件通知
  5. EMAIL="admin@example.com"
  6. # 记录开始时间
  7. echo "===== Starting system update at $(date) =====" >> $LOG_FILE
  8. # 清理Yum缓存
  9. echo "Cleaning Yum cache..." >> $LOG_FILE
  10. yum clean all >> $LOG_FILE 2>&1
  11. # 更新系统
  12. echo "Updating system..." >> $LOG_FILE
  13. yum -y update >> $LOG_FILE 2>&1
  14. # 检查是否需要重启
  15. if [ -f /var/run/reboot-required ]; then
  16.     echo "System restart required after updates." >> $LOG_FILE
  17.     echo "System restart required after updates." | mail -s "System Update Notification" $EMAIL
  18. fi
  19. # 记录完成时间
  20. echo "===== Completed system update at $(date) =====" >> $LOG_FILE
  21. # 发送日志
  22. cat $LOG_FILE | mail -s "System Update Log" $EMAIL
复制代码

设置脚本可执行权限:
  1. chmod +x /usr/local/bin/auto-update.sh
复制代码

设置定时任务:
  1. crontab -e
复制代码

添加以下内容,设置每周日凌晨2点自动更新系统:
  1. 0 2 * * 0 /usr/local/bin/auto-update.sh
复制代码

6.2 使用Ansible管理Yum源

Ansible是一种自动化工具,可以用来管理多台服务器的Yum源配置。
  1. dnf install ansible
复制代码

创建一个playbook文件yum-repo-management.yml:
  1. ---
  2. - name: Yum Repository Management
  3.   hosts: all
  4.   become: yes
  5.   tasks:
  6.     - name: Install EPEL repository
  7.       dnf:
  8.         name: epel-release
  9.         state: present
  10.     - name: Add RPM Fusion repository
  11.       dnf:
  12.         name:
  13.           - "https://download1.rpmfusion.org/free/el/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm"
  14.           - "https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm"
  15.         state: present
  16.     - name: Configure local repository
  17.       yum_repository:
  18.         name: local-repo
  19.         description: Local CentOS Stream Repository
  20.         baseurl: http://repo.example.com/centos/$releasever/$basearch
  21.         enabled: yes
  22.         gpgcheck: no
  23.         file: local-repo
  24.     - name: Update all packages
  25.       dnf:
  26.         name: "*"
  27.         state: latest
  28.       when: update_packages is defined and update_packages|bool
  29.     - name: Install common packages
  30.       dnf:
  31.         name:
  32.           - vim
  33.           - htop
  34.           - net-tools
  35.           - tcpdump
  36.           - nmap-ncat
  37.         state: present
复制代码
  1. # 运行playbook,不更新软件包
  2. ansible-playbook yum-repo-management.yml
  3. # 运行playbook,并更新所有软件包
  4. ansible-playbook yum-repo-management.yml --extra-vars "update_packages=true"
复制代码

6.3 使用Cobbler管理Yum源

Cobbler是一个Linux安装服务器,可以用来管理Yum源和系统部署。
  1. dnf install cobbler cobbler-web
复制代码

编辑/etc/cobbler/settings.yaml文件:
  1. server: 192.168.1.100
  2. next_server: 192.168.1.100
  3. manage_dhcp: 1
  4. manage_dns: 1
复制代码
  1. # 启动Cobbler服务
  2. systemctl enable --now cobblerd httpd
  3. # 添加CentOS Stream源
  4. cobbler repo add --name=centos-stream-9-baseos --mirror=http://mirror.centos.org/centos/9-stream/BaseOS/x86_64/os/ --arch=x86_64 --breed=yum
  5. cobbler repo add --name=centos-stream-9-appstream --mirror=http://mirror.centos.org/centos/9-stream/AppStream/x86_64/os/ --arch=x86_64 --breed=yum
  6. # 同步Yum源
  7. cobbler reposync
  8. # 创建发行版
  9. cobbler distro add --name=centos-stream-9-x86_64 --kernel=/var/www/cobbler/ks_mirror/centos-stream-9-baseos/images/pxeboot/vmlinuz --initrd=/var/www/cobbler/ks_mirror/centos-stream-9-baseos/images/pxeboot/initrd.img --arch=x86_64 --breed=redhat
  10. # 创建配置文件
  11. cobbler profile add --name=centos-stream-9-x86_64 --distro=centos-stream-9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/sample_end.ks
  12. # 同步Cobbler配置
  13. cobbler sync
复制代码

7. 打造稳定高效的企业级服务器运行环境

7.1 Yum源安全加固

确保所有Yum源都启用了GPG检查,以验证软件包的完整性:
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=http://mirror.centos.org/centos/9-stream/BaseOS/$basearch/os/
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码
  1. # 导入CentOS官方GPG密钥
  2. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  3. # 导入EPEL GPG密钥
  4. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
复制代码

优先使用HTTPS协议的Yum源,以确保数据传输的安全性:
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

7.2 Yum源性能优化

编辑/etc/dnf/dnf.conf文件,添加以下配置:
  1. [main]
  2. max_parallel_downloads=10
  3. fastestmirror=True
复制代码

如果使用云服务,可以考虑使用CDN加速Yum源访问:
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=https://cdn.example.com/centos/9-stream/BaseOS/$basearch/os/
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

编辑/etc/dnf/dnf.conf文件,优化缓存设置:
  1. [main]
  2. keepcache=True
  3. metadata_expire=6h
  4. metadata_timer_sync=6h
复制代码

7.3 监控Yum源状态

创建Nagios插件脚本/usr/lib64/nagios/plugins/check_yum_repos.sh:
  1. #!/bin/bash
  2. # 检查Yum源状态
  3. STATE_OK=0
  4. STATE_WARNING=1
  5. STATE_CRITICAL=2
  6. STATE_UNKNOWN=3
  7. # 检查Yum源是否可用
  8. yum repolist -v > /dev/null 2>&1
  9. if [ $? -ne 0 ]; then
  10.     echo "CRITICAL - Yum repositories are not accessible"
  11.     exit $STATE_CRITICAL
  12. fi
  13. # 检查是否有可用更新
  14. UPDATES=$(yum check-update -q | wc -l)
  15. if [ $UPDATES -gt 0 ]; then
  16.     echo "WARNING - $UPDATES updates available"
  17.     exit $STATE_WARNING
  18. fi
  19. echo "OK - All repositories are accessible and system is up to date"
  20. exit $STATE_OK
复制代码

设置脚本可执行权限:
  1. chmod +x /usr/lib64/nagios/plugins/check_yum_repos.sh
复制代码

创建Zabbix agent配置文件/etc/zabbix/zabbix_agentd.d/yum_repos.conf:
  1. UserParameter=yum.repos.status,yum repolist -q | grep "repolist:" | cut -d":" -f2 | tr -d " "
  2. UserParameter=yum.updates.count,yum check-update -q | wc -l
复制代码

重启Zabbix agent:
  1. systemctl restart zabbix-agent
复制代码

7.4 实施Yum源高可用方案

编辑.repo文件,添加多个镜像源:
  1. [baseos]
  2. name=CentOS Stream $releasever - BaseOS
  3. baseurl=
  4.     http://mirror1.centos.org/centos/9-stream/BaseOS/$basearch/os/
  5.     http://mirror2.centos.org/centos/9-stream/BaseOS/$basearch/os/
  6.     http://mirror3.centos.org/centos/9-stream/BaseOS/$basearch/os/
  7. gpgcheck=1
  8. enabled=1
  9. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
复制代码

在企业环境中,可以使用负载均衡器来分发Yum源请求:
  1. upstream yum-repos {
  2.     server mirror1.example.com;
  3.     server mirror2.example.com;
  4.     server mirror3.example.com;
  5. }
  6. server {
  7.     listen 80;
  8.     server_name yum.example.com;
  9.     location / {
  10.         proxy_pass http://yum-repos;
  11.         proxy_set_header Host $host;
  12.         proxy_set_header X-Real-IP $remote_addr;
  13.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14.     }
  15. }
复制代码

配置Nginx使用GeoIP模块选择最近的镜像:
  1. http {
  2.     geoip_country /usr/share/GeoIP/GeoIP.dat;
  3.     upstream yum-us {
  4.         server us-mirror1.example.com;
  5.         server us-mirror2.example.com;
  6.     }
  7.     upstream yum-eu {
  8.         server eu-mirror1.example.com;
  9.         server eu-mirror2.example.com;
  10.     }
  11.     upstream yum-asia {
  12.         server asia-mirror1.example.com;
  13.         server asia-mirror2.example.com;
  14.     }
  15.     server {
  16.         listen 80;
  17.         server_name yum.example.com;
  18.         location / {
  19.             if ($geoip_country_code ~* (US|CA|MX)) {
  20.                 proxy_pass http://yum-us;
  21.                 break;
  22.             }
  23.             
  24.             if ($geoip_country_code ~* (DE|FR|GB|IT)) {
  25.                 proxy_pass http://yum-eu;
  26.                 break;
  27.             }
  28.             
  29.             if ($geoip_country_code ~* (CN|JP|KR)) {
  30.                 proxy_pass http://yum-asia;
  31.                 break;
  32.             }
  33.             
  34.             proxy_pass http://yum-us;
  35.         }
  36.     }
  37. }
复制代码

8. 总结

CentOS Stream的滚动更新模式为企业提供了更接近RHEL开发前沿的体验,但同时也对Yum源管理提出了更高的要求。通过本文介绍的基础配置、高级优化、依赖问题解决方案以及企业级环境构建方法,系统管理员可以有效地管理CentOS Stream系统的软件包,确保系统的稳定性和安全性。

关键要点包括:

1. 理解CentOS Stream的滚动更新模式:认识到其与传统固定版本发行版的区别,以及这对Yum源管理的影响。
2. Yum源基础配置:掌握官方源、第三方源和本地源的配置方法,确保系统能够获取所需的软件包。
3. Yum源高级优化:通过缓存管理、优先级设置、插件使用和镜像管理等技术,提高Yum源的性能和可靠性。
4. 解决依赖问题:熟练使用Yum提供的工具和方法,有效解决滚动更新模式下可能出现的软件包依赖问题。
5. 提升系统管理效率:通过自动化脚本、Ansible和Cobbler等工具,实现Yum源的批量管理和自动化运维。
6. 构建企业级环境:通过安全加固、性能优化、监控和高可用方案,打造稳定高效的企业级服务器运行环境。

理解CentOS Stream的滚动更新模式:认识到其与传统固定版本发行版的区别,以及这对Yum源管理的影响。

Yum源基础配置:掌握官方源、第三方源和本地源的配置方法,确保系统能够获取所需的软件包。

Yum源高级优化:通过缓存管理、优先级设置、插件使用和镜像管理等技术,提高Yum源的性能和可靠性。

解决依赖问题:熟练使用Yum提供的工具和方法,有效解决滚动更新模式下可能出现的软件包依赖问题。

提升系统管理效率:通过自动化脚本、Ansible和Cobbler等工具,实现Yum源的批量管理和自动化运维。

构建企业级环境:通过安全加固、性能优化、监控和高可用方案,打造稳定高效的企业级服务器运行环境。

通过合理应用这些技术和方法,企业可以充分发挥CentOS Stream滚动更新模式的优势,同时有效应对其带来的挑战,构建一个既稳定又高效的服务器运行环境。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>