[AWS Lambda]:如何解决"/lib64/libm.so.6: version `GLIBC_2.29' not found"的问题

4

我正在尝试在使用 Node.js 14.x 运行时的 Lambda 函数中使用 gifsicle。执行该函数会抛出以下错误:

ERROR /opt/gifsicle: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /opt/gifsicle)

在进行了一些尽职调查后,我认为我需要添加一个层到我的lambda中,其中包含错误中提到的目录和所需依赖项 - 但是我完全不知道如何去做。有什么建议吗?
1个回答

0

指令可以在这里找到。创建层内容的信息相对较少。您需要执行以下操作:

  • 生成一个带有Amazon Linux 2的EC2实例
  • 将gifsicle安装到其中。您可能需要从源代码构建它。
  • 创建一个zip文件。 gifsicle应该放在bin文件夹中,任何所需的库都应放在lib文件夹中。

此zip文件应准备好上传为Lambda层。


1
错误引用了 lib64/ 而不是 lib/,这让我感到困惑。我是在运行 Gifsicle 的本地 Linux 机器上创建的 zip 包,它可以正常运行。我只是不确定应该将哪个 lib 文件夹包含在 bundle 中。 - John Durand
你的本地文件可能不起作用。您需要在EC2环境中编译gifsicle。正如错误提示所说,找不到 glibc 版本2.29。在您的系统中,二进制文件是使用 glibc 2.29 构建的,但是 Lambda 容器中没有这个版本可用。恐怕没有捷径。您需要生成一个 EC2 实例,在那里安装二进制文件并创建zip文件。 - kgiannakakis
1
我生成了一个新的EC2实例,安装了Gifsicle,创建了一个包括gifisicle和整个/lib64/*文件夹的zip文件 - 通过was cli将该层推送到lambda中,但我仍然遇到了问题。我需要知道如何配置lambda以查看我的zip文件的/lib64文件夹。 - John Durand
@JohnDurand 你能解决这个问题吗?我也遇到了类似的情况。 - Tomas Capretto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接