【问题标题】:[AWS Lambda]: How to fix "/lib64/libm.so.6: version `GLIBC_2.29' not found"[AWS Lambda]:如何修复“/lib64/libm.so.6:未找到版本‘GLIBC_2.29’”
【发布时间】:2021-12-21 00:51:19
【问题描述】:

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

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

在做了一些尽职调查之后,我相信我需要在我的 lambda 中添加一个层,其中包含错误中指出的目录和所需的依赖项 - 但我完全不知道如何去做。

有什么建议吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda glibc libc


    【解决方案1】:

    说明可用here。关于如何创建图层内容的信息相当贫乏。您需要做的是:

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

    这个 zip 文件应该可以作为 Lambda 层上传。

    【讨论】:

    • 错误引用 lib64/ 而不是 lib/ 这是我的困惑所在。我从运行 Gifsicle 的本地 linux 机器上创建了 zip 包,它运行得很好。我只是对捆绑包中包含的 lib 文件夹感到困惑。
    • 您的本地文件可能无法使用。您需要在 EC2 环境中编译 gifsicle。正如错误所说,找不到 glibc 2.29 版。在您的系统中,二进制文件是针对 glibc 2.29 构建的,但这在 Lambda 容器中不可用。恐怕没有捷径可走。您需要生成一个 EC2 实例,安装您的二进制文件并在那里创建 zip 文件。
    • 我创建了一个新的 EC2 实例,安装了 Gifsicle,创建了包含 gifisicle 和整个 /lib64/* 文件夹的 zip - 通过 cli 将该层推到 lambda,我仍然遇到这个问题。我需要知道如何配置 lambda 以查看我的 zip 文件的 /lib64 文件夹
    猜你喜欢
    • 2022-09-27
    • 2022-12-12
    • 2020-03-07
    • 2017-07-14
    • 2018-03-16
    • 2015-06-05
    • 2015-10-10
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多