aws-RunPatchBaseline 不通过 apt-get 安装新软件包

问题描述

通过 AWS SSM 文档 aws-RunPatchBaseline 运行一些测试后,用于基于 Debian 的操作系统(如 Ubuntu)的内容代码并没有真正安装任何必需的包,即使使用“安装”参数设置并执行。这是需要修复的问题吗,或者为什么这个 SSM 文档在没有真正安装软件包的情况下以这种方式工作。

从文档中,请参见以下内容

apt-get update 从存储库下载包列表并“更新”它们以获取有关包及其依赖项的最新版本的信息。它将为所有存储库和 PPA 执行此操作。来自http://linux.die.net/man/8/apt-get

用于从其来源重新同步包索引文件。可用包的索引是从 /etc/apt/sources.list(5) 中指定的位置获取的。应始终在升级dist-upgrade 之前执行更新。

如果 APT 通过 apt-get update 知道这些新版本,则 apt-get upgrade 将获取机器上现有软件包的新版本。

来自http://linux.die.net/man/8/apt-get

用于从/etc/apt/sources.list(5) 中列举的源安装系统上当前安装的所有软件包的最新版本。当前安装的带有可用新版本的软件包被检索和升级;在任何情况下都不会删除当前已安装的软件包,也不会检索和安装尚未安装的软件包。如果不更改另一个包的安装状态就无法升级当前安装的包的新版本,将保留其当前版本。 [强调我的] 必须首先执行更新,以便 apt-get 知道有新版本的软件包可用。

目前代码内容是这样的:

          "        apt-get update >/dev/null","    fi","}",

¿我应该在 apt-get update 后添加自定义行还是使用 apt-get upgrade -y 创建自定义 ssm?,该文档可以通过安装软件包来工作,但到目前为止,例如在 Ubuntu 上它只是没有'除了从 repos 更新包列表(不安装任何)之外,不要做任何事情。

解决方法

根据我的经验,在 Ubuntu 20.04 上,它可以工作。您可以通过在此类实例上运行 apt 后检查 AWS-RunPatchBaseline 日志来验证这一点。 日志位于:

/var/log/apt/history.log

/var/log/apt/term.log

由于您提供了有关您的测试在哪里进行的任何详细信息,您使用的是哪个 linux 发行版,也没有提供任何带有 ssm 代理或 apt 可能错误的日志输出,因此很难推测为什么它对您不起作用。

实际升级由 python 脚本执行,而不是您列出的命令。您可以在运行 AWS-RunPatchBaseline 后检查其代码:

/var/log/amazon/ssm/patch-baseline-operations