我使用 Amazon Elastic Kubernetes Service (Amazon EKS) 优化型 Amazon Machine Image (AMI) 来启动我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。但是,即使有更高版本可用,我也无法更新内核或软件包。我收到 "Nothing to do" 和 "No packages marked for update" 的消息。
简短描述
通常,Amazon EKS 优化型 AMI 会阻止软件包更新,因为 yum-versionlock 插件锁定了特定的软件包版本并将所有其他版本排除在外。该插件将软件包锁定在其定义的版本,以防意外更新到不兼容的版本。
要解决此问题,最佳做法是更新 AMI 而非内核。但是,如果您使用的是包含锁定软件包的自定义 AMI,则可以移除版本锁定并升级该软件包。
解决方法
**注意:**在进行故障排除或更改之前,最佳做法是备份您的 EC2 实例和数据。创建实例的 AMI,或创建 Amazon Elastic Block Store (Amazon EBS) 卷的快照。
验证您的 AMI 是否存在版本锁定
要检查您的实例正在运行的内核版本,请运行以下命令:
uname -r
要检查软件包是否锁定到特定的内核版本,请运行以下命令:
yum versionlock list
如果 yum-versionlock 已激活版本锁定,您会收到与以下示例类似的输出:
kernel-devel-1:6.1.155-176.282.amzn2023.*
kernel-headers-1:6.1.155-176.282.amzn2023.*
kernel-1:6.1.155-176.282.amzn2023.*
kernel-libbpf-1:6.1.155-176.282.amzn2023.*
kernel-srpm-macros-0:1.0-14.amzn2023.0.3.*
kernel-livepatch-repo-s3-0:2023.9.20251014-0.amzn2023.*
amazon-ec2-net-utils-0:2.7.1-1.amzn2023.0.1.*
containerd-2:1.7.27-1.eks.amzn2023.0.4.*
更新存在版本锁定的 AMI
升级 Amazon EKS 优化型 AMI 以使用最新版本。由于您仅使用经过验证的内核版本,此更改可保持系统稳定。
移除版本锁定,然后升级软件包
**重要事项:**更新后的软件包与 containerd 等其他组件之间可能存在兼容性问题。锁定更新尚未经过兼容性测试。
要升级自定义 AMI 的软件包,请完成以下步骤:
-
运行以下命令查看锁定的软件包列表:
sudo yum versionlock list:
-
要移除特定软件包的版本锁定,请运行以下命令:
sudo yum versionlock delete package_name
**注意:**请将 package_name 替换为要解锁的软件包。
要移除所有软件包的版本锁定,请运行以下命令:
sudo yum versionlock clear
-
运行以下命令验证版本是否已解锁:
sudo yum versionlock list
-
将软件包更新到存储库中可用的最新版本。
相关信息
Amazon Linux 2 常见问题
Amazon Linux 2023 常见问题
通过 AL2023 上的版本控制存储库实现确定性升级