更新 Amazon Linux 实例上的实例软件 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

更新 Amazon Linux 实例上的实例软件

使软件保持最新非常重要。Linux 发行版中的程序包会经常更新,以修复错误、添加功能,以及防止安全漏洞。当您首次启动并连接到 Amazon Linux 实例时,您可能会看到出于安全目的要求您更新软件包的消息。本节介绍如何更新整个系统或仅更新单个程序包。

此信息适用于 Amazon Linux 2 和 Amazon Linux。有关 AL2023 的更多信息,请参阅《AL2023 User Guide》中的 Managing packages and operating system updates

注意

Amazon Linux AMI 于 2023 年 12 月 31 日结束其生命周期,并将自 2024 年 1 月 1 日起停止接收任何安全更新或错误修复。有关 Amazon Linux AMI 生命周期终止和维护支持的更多信息,请参阅博客文章关于 Amazon Linux AMI 生命周期终止的最新动态。我们建议您将应用程序升级到 AL2023,其中包含直到 2028 年的长期支持。

有关 Amazon Linux 2 变更和更新的信息,请参阅 Amazon Linux 2 发布说明

有关对 AL2023 的更改和更新的信息,请参阅 AL2023 版本注释

重要

此信息适用于 Amazon Linux。有关其他发布版本的信息,请参阅特定于该版本的文档。

重要

如果您在仅 IPv6 的子网中启动了使用 Amazon Linux 2 AMI 的 EC2 实例,则必须连接到该实例并运行 sudo amazon-linux-https disable。这样,您的 AL2 实例才可以使用 http 补丁服务通过 IPv6 连接到 S3 中的 yum 存储库。

更新 Amazon Linux 实例上的所有程序包
  1. (可选)在 Shell 窗口中启动 screen 会话。有时您可能会遇到网络中断,这样会断开到实例的 SSH 连接。如果在较长的软件更新期间发生这种情况,实例处于混乱、但可恢复的状态。即使连接中断,通过 screen 会话也可继续运行更新,您稍后可重新连接到此会话,不会有问题。

    1. 执行 screen 命令以开始会话。

      [ec2-user ~]$ screen
    2. 如果会话中断,请再次登录实例并列出可用屏幕。

      [ec2-user ~]$ screen -ls There is a screen on: 17793.pts-0.ip-12-34-56-78 (Detached) 1 Socket in /var/run/screen/S-ec2-user.
    3. 使用 screen -r 命令和前一命令的进程 ID 重新连接到屏幕。

      [ec2-user ~]$ screen -r 17793
    4. 使用 screen 完成操作后,使用 exit 命令关闭会话。

      [ec2-user ~]$ exit [screen is terminating]
  2. 运行 yum update 命令。您可以选择添加 --security 标记,这样仅应用安全更新。

    [ec2-user ~]$ sudo yum update
  3. 查看所列的程序包,输入 y 并按 Enter 接受更新。更新系统上的所有程序包可能需要几分钟。yum 输出显示更新运行状态。

  4. (可选) 重启实例以确保您使用的是来自更新的最新程序包和库;重启发生前不会加载内核更新。更新任何 glibc 库后也应进行重启。对于用来控制服务的程序包的更新,重新启动服务可能就足以使更新生效,但系统重启可确保所有之前的程序包和库更新都是完整的。

更新 Amazon Linux 实例上的单个程序包

使用此过程可更新单个程序包 (及其依赖关系),而非整个系统。

  1. 使用要更新的程序包的名称运行 yum update 命令。

    [ec2-user ~]$ sudo yum update openssl
  2. 查看所列的程序包信息,输入 y 并按 Enter 接受更新。如果存在必须解析的程序包依赖关系,有时会列出多个数据包。yum 输出显示更新运行状态。

  3. (可选) 重启实例以确保您使用的是来自更新的最新程序包和库;重启发生前不会加载内核更新。更新任何 glibc 库后也应进行重启。对于用来控制服务的程序包的更新,重新启动服务可能就足以使更新生效,但系统重启可确保所有之前的程序包和库更新都是完整的。