引言:理解 Oracle Linux 7.6 的更新与升级机制
Oracle Linux 是一个基于 Red Hat Enterprise Linux (RHEL) 的企业级操作系统,广泛用于服务器环境。Oracle Linux 7.6 是 Oracle Linux 7 系列的一个特定版本,发布于 2018 年左右,它继承了 RHEL 7.6 的稳定性和安全性。系统更新(update)通常指安装最新的安全补丁和 bug 修复,而系统升级(upgrade)可能指从一个次要版本升级到另一个(如从 7.6 到 7.9),或在大版本间迁移(如从 7 到 8)。在 Oracle Linux 中,这些操作主要通过 YUM(Yellowdog Updater, Modified)或 DNF(在较新版本中)包管理器实现,因为 Oracle Linux 7 使用 YUM 作为默认工具。
进行系统更新和升级的目的是保持系统的安全性、稳定性和兼容性。例如,忽略安全更新可能导致漏洞暴露,如 CVE-2021-44228(Log4j 漏洞)。在企业环境中,这些操作需要谨慎规划,以避免中断服务。Oracle 提供官方的 ULN(Unbreakable Linux Network)或免费的 Oracle Linux yum 仓库来获取更新。
关键注意事项
:
备份数据
:在任何更新前,使用
rsync
或
tar
备份关键文件和配置。
检查兼容性
:确保硬件和应用程序与目标版本兼容。
测试环境
:先在非生产环境中测试。
Oracle Linux 特定
:Oracle 提供 UEK(Unbreakable Enterprise Kernel)和 RHEL 兼容内核;更新时可能涉及内核切换。
下面,我们将详细分解操作步骤,包括环境准备、日常更新、版本升级和故障排除。每个步骤都包含完整的命令示例和解释。
1. 环境准备:确保系统就绪
在开始更新或升级前,必须准备环境。这包括检查当前版本、配置仓库和安装必要工具。跳过此步骤可能导致更新失败或系统不稳定。
1.1 检查当前系统版本和状态
首先,确认您正在运行 Oracle Linux 7.6。使用以下命令:
cat /etc/oracle-release
输出示例:
Oracle Linux Server release 7.6
或者检查内核版本:
uname -r
输出示例(Oracle Linux 7.6 可能使用 UEK 内核):
4.1.12-124.30.1.el7uek.x86_64
检查系统更新状态:
yum check-update
此命令会列出可用的更新包,而不实际安装。如果输出为空,表示系统已最新。
1.2 配置软件仓库
Oracle Linux 7 默认使用 Oracle 的 yum 仓库。如果您有 ULN 订阅,配置 ULN 以获取最新更新;否则,使用免费的公共仓库。
使用公共仓库
(推荐免费用户):
编辑
/etc/yum.repos.d/oracle-linux-ol7.repo
文件(如果不存在,创建它):
sudo vi /etc/yum.repos.d/oracle-linux-ol7.repo
添加以下内容(基于 Oracle 官方仓库):
[ol7_latest]
name=Oracle Linux 7 Latest ($releasever)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
enabled=1
[ol7_UEKR6]
name=Oracle Linux 7 UEK Release 6 ($releasever)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/UEKR6/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
enabled=1
保存后,导入 GPG 密钥:
sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
配置 ULN
(如果有订阅):
访问
ULN 网站
并注册。
安装 ULN 客户端:
sudo yum install ulnify
配置:
sudo ulnify –register
按提示输入您的 ULN 凭据。
1.3 安装必要工具和清理系统
确保
yum-utils
已安装,用于高级管理:
sudo yum install -y yum-utils
清理 yum 缓存,以避免旧数据干扰:
sudo yum clean all
sudo yum makecache
检查磁盘空间(至少需要 500MB 可用空间):
df -h /var/cache/yum
如果空间不足,清理旧内核:
sudo package-cleanup –oldkernels –count=2 # 保留最近2个内核
1.4 重启并验证
如果最近安装了内核更新,重启系统:
sudo reboot
重启后,再次检查版本以确认准备就绪。
2. 系统更新操作:安装安全补丁和 bug 修复
系统更新是日常维护的核心,通常每月或根据安全公告执行。Oracle Linux 7.6 的更新包括内核、glibc 和 OpenSSL 等关键组件。更新不会改变主版本号(如仍为 7.6,但补丁级别更高)。
2.1 执行完整系统更新
使用
yum update
命令更新所有可用包:
sudo yum update
详细步骤和输出示例
:
命令运行后,yum 会扫描仓库并列出要更新的包,例如:
Loaded plugins: langpacks, ulninfo
ol7_latest | 3.6 kB 00:00:00
ol7_UEKR6 | 3.5 kB 00:00:00
Resolving Dependencies
–> Running transaction check
—> Package kernel-uek.x86_64 0:4.1.12-124.30.1.el7uek will be updated
—> Package kernel-uek.x86_64 0:4.1.12-124.32.1.el7uek will be an update
…
Total download size: 500 M
Is this ok [y/N]:
这里,内核从 4.1.12-124.30.1 更新到 4.1.12-124.32.1。
输入
y
确认下载和安装。yum 会处理依赖关系。
安装完成后,检查更新日志:
sudo grep -i updated /var/log/yum.log
重启以应用内核更新:
sudo reboot
验证更新:
rpm -qa | grep kernel-uek # 检查新内核
sudo yum history info last # 查看上次更新详情
2.2 选择性更新
如果只想更新特定包(如内核):
sudo yum update kernel-uek
或排除某些包(如避免更新内核):
sudo yum update –exclude=kernel*
2.3 自动化更新
对于生产环境,使用
yum-cron
自动化:
安装:
sudo yum install -y yum-cron
配置
/etc/yum/yum-cron.conf
:
[commands]
update_cmd = default
update_messages = yes
download_updates = yes
apply_updates = yes
random_sleep = 360 # 随机延迟360分钟
启动并启用服务:
sudo systemctl enable yum-cron
sudo systemctl start yum-cron
这将每天检查并应用更新。
2.4 安全更新特定
Oracle 发布安全公告(如 ELSA)。检查可用安全更新:
sudo yum updateinfo list security all
安装所有安全更新:
sudo yum update –security
示例输出:
ELSA-2023-1234: openssl security update
3. 系统升级操作:从 Oracle Linux 7.6 升级到更高版本
Oracle Linux 7.6 是 7 系列的子版本。升级通常指:
次要升级
:从 7.6 到 7.9(推荐,使用
yum
)。
主要升级
:从 7 到 8(复杂,需要预升级工具,如 Leapp)。
Oracle Linux 7 的支持结束日期为 2024 年 6 月,因此建议升级到 7.9 或迁移到 8/9。
3.1 升级到 Oracle Linux 7.9(次要升级)
这是最安全的路径,使用 yum 仓库。
备份系统
:
sudo tar -czf /backup/system-backup.tar.gz /etc /var /home
更新到最新 7.6 补丁
:
sudo yum update
sudo reboot
启用 7.9 仓库
:
编辑
/etc/yum.repos.d/oracle-linux-ol7.repo
,确保
baseurl
指向 7.9:
[ol7_latest]
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
或者,如果使用 ULN,确保订阅了 “Oracle Linux 7” 通道。
执行升级
:
sudo yum distro-sync
或:
sudo yum update
这会同步到 7.9。输出示例:
—> Package oraclelinux-release.x86_64 0:7.6-1.0.1.el7 will be updated
—> Package oraclelinux-release.x86_64 0:7.9-1.0.1.el7 will be an update
…
重启并验证
:
sudo reboot
cat /etc/oracle-release # 应显示 “Oracle Linux Server release 7.9”
处理内核
:
如果切换到 RHEL 兼容内核:
sudo grub2-set-default 0 # 设置默认内核
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
3.2 升级到 Oracle Linux 8(主要升级)
Oracle 提供 Leapp 工具进行就地升级。注意:这需要 64 位 x86_64 架构,且不支持所有硬件。
检查先决条件
:
sudo yum install leapp
sudo leapp preupgrade
Leapp 会生成报告
/var/log/leapp/leapp-report.txt
,列出阻碍(如不兼容的软件包)。
解决报告中的问题
:
移除不兼容包,如旧版
cloud-init
:
sudo yum remove cloud-init
更新所有包:
sudo yum update
sudo reboot
执行升级
:
sudo leapp upgrade
这会下载 Oracle Linux 8 包并引导到升级环境。过程可能需要 1-2 小时。
重启到新系统
:
升级后,系统会自动重启。验证:
cat /etc/oracle-release # 应显示 “Oracle Linux Server release 8.x”
后升级步骤
:
更新配置文件(如
/etc/selinux/config
)。
安装新内核:
sudo yum update
注意
:如果 Leapp 报告太多问题,考虑全新安装 Oracle Linux 8 并迁移数据。
3.3 从 7.6 到其他版本的注意事项
使用 ISO 镜像
:如果仓库不可用,下载 Oracle Linux ISO,挂载并使用
yum
从本地仓库升级。
容器化环境
:如果在 Docker 或 Kubernetes 中,使用容器镜像更新而非主机升级。
4. 故障排除和最佳实践
4.1 常见问题及解决方案
问题:yum 错误 “No package available”
原因:仓库配置错误。
解决:检查
/etc/yum.repos.d/
,运行
sudo yum repolist all
列出仓库。
问题:依赖冲突
示例:
Error: Package: glibc-2.17-292.el7.x86_64
解决:使用
sudo yum deplist
sudo yum distro-sync –skip-broken
。
问题:内核恐慌后无法启动
解决:在 GRUB 菜单中选择旧内核,然后
sudo grub2-set-default
问题:磁盘空间不足
解决:
sudo yum clean all
和
sudo du -sh /var/cache/yum
查找大文件。
问题:Leapp 升级失败
检查日志:
sudo cat /var/log/leapp/leapp-upgrade.log
。常见修复:禁用第三方仓库。
4.2 最佳实践
监控更新
:使用
yum history
跟踪更改,支持回滚(
sudo yum history undo
)。
安全最佳实践
:启用防火墙(
sudo systemctl enable firewalld
)和 SELinux。
文档参考
:始终查阅
Oracle Linux 文档
和
Oracle Support
。
测试
:在虚拟机(如 VirtualBox)中模拟升级。
时间安排
:在低峰期执行,预计更新 30-60 分钟,升级 1-4 小时。
通过这些步骤,您可以安全地管理 Oracle Linux 7.6 的更新和升级。如果遇到特定错误,提供日志以获取进一步帮助。保持系统更新是企业运维的关键,确保您的环境始终安全可靠。