Elastic Beanstalk部署Rails 6应用时yum安装nodejs失败求助
问题根因
- yum优先级插件屏蔽:从日志可看到yum加载了
priorities插件,Amazon Linux 2默认给官方源设置了更高优先级,Nodesource的第三方源添加后包会被过滤,导致搜索不到nodejs安装包。 - 静默脚本隐藏异常:
01_download_nodejs命令使用了--silent参数执行Nodesource的setup脚本,执行过程中如果出现GPG key验证失败、依赖缺失等异常,不会输出错误日志,即便源未正确添加也会被EB判定为执行成功。 - 平台版本兼容性问题:你使用的EB 3.3.5平台对应的Amazon Linux 2系统版本较旧,和新版Nodesource 16.x的setup脚本存在兼容问题,无法正确生成yum源配置文件。
解决方案
方案1:适配现有yum安装逻辑(改动最小)
修改你的两条EB配置命令即可:
01_download_nodejs命令修改为:
curl --location https://rpm.nodesource.com/setup_16.x | sudo -E bash - && sudo yum-config-manager --save --setopt=nodesource.priority=10
02_install_nodejs命令修改为,临时禁用优先级插件安装:
yum -y install nodejs --disableplugin=priorities
方案2:使用官方源安装(最稳定)
完全替换原有两条命令,直接使用Amazon Linux 2自带的extras源安装nodejs16,无需引入第三方源,不会出现源优先级问题:
01_install_nodejs: command: "amazon-linux-extras install -y nodejs16"
方案3:二进制包直接安装(无依赖)
直接下载NodeJS官方预编译二进制包解压到系统路径,完全绕开yum包管理的限制,适合对版本有固定要求的场景:
01_install_nodejs: command: "curl -sL https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz | sudo tar -xJ -C /usr/local --strip-components=1"
部署后可登录EB实例执行node -v、npm -v验证安装是否正常。
内容的提问来源于stack exchange,提问作者Mohamed
相关产品推荐
相关产品推荐

