libuv 的 nodejs-16 依赖问题

nodejs-16 dependency issue with libuv

这就是我在尝试 运行 yum update.

时在我的亚马逊 Linux 2 实例上获得的内容

您建议我使用 --skip-broken 还是等到 AWS 推出修复程序?

--> Processing Dependency: libuv >= 1:1.42.0 for package: 1:nodejs-16.13.2-8.el7.x86_64
--> Finished Dependency Resolution
Error: Package: 1:nodejs-16.13.2-8.el7.x86_64 (epel-testing)
           Requires: libuv >= 1:1.42.0
           Installed: 1:libuv-1.39.0-1.amzn2.x86_64 (@amzn2-core)
               libuv = 1:1.39.0-1.amzn2
           Available: 1:libuv-1.23.2-1.amzn2.0.2.i686 (amzn2-core)
               libuv = 1:1.23.2-1.amzn2.0.2
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

是的,这个问题加 1。 OP,--skip-broken 标志只会暂时修复您当前的 运行 服务器。如果您正在烘焙任何新的 AMI 或使用 Terraform、CDK 等启动任何新的 EC2,则 --skip-broken 标志将不起作用,因为它不能作为 aws cloud.init 脚本的一部分使用。这将导致任何新的 AMI 或 EC2 创建超时并失败。

一个可能的解决方法是尝试直接从 source 编译 libuv,因为 > 1.39 遗憾的是目前无法从任何 linux 发行版获得。

我为此使用的解决方法是更新到基础 Amazon Linux AMI 的更新版本。根据此文档,2022 年 3 月 15 日发布的 libuv 版本为 1.42.0-2:

https://docs.aws.amazon.com/linux/al2022/release-notes/all-packages-al2022-20220308.html

我认为问题是因为您只使用了多个 yum 存储库,并且最新版本的 libuv 包(epel-testing 和 amzn2-core)版本不匹配。 对我有用的是暂时禁用 epel 存储库,或暂时禁用所有 yum 插件(在 /etc/yum.conf 上设置 plugins=0)并执行 yum 升级。