在Alpine系统中切换至Node.js v20版本的命令咨询
问题
Serverless 要求 Node.js 版本 >18,我在部署脚本中添加了以下命令:
$ apk add nodejs --no-cache --repository="http://dl-cdn.alpinelinux.org/alpine/v3.20/main/" --allow-untrusted fetch http://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz OK: 821 MiB in 153 packages $ apk add npm --no-cache --repository="http://dl-cdn.alpinelinux.org/alpine/v3.20/main/" --allow-untrusted fetch http://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz OK: 821 MiB in 153 packages $ node --version v14.21.3
执行后 Node.js 版本还是 v14.21.3,请问需要执行什么命令才能切换到 Alpine v3.20 仓库中的新版本 Node.js?
解决方案
问题出在系统默认的 Alpine v3.14 仓库优先级更高,且你已经安装了该仓库中的 Node.js v14。即使指定了 v3.20 仓库,apk 会优先保留已安装的旧版本,不会自动替换为新仓库的新版本。
你可以按以下步骤操作:
- 卸载旧版本的 Node.js 和 npm
apk del nodejs npm
- 从 Alpine v3.20 仓库重新安装 Node.js 和 npm
apk add nodejs npm --no-cache --repository="http://dl-cdn.alpinelinux.org/alpine/v3.20/main/" --allow-untrusted
执行完成后,运行 node --version 就能看到 v3.20 仓库中的新版本 Node.js 了(通常是 v20.x 版本,满足 >18 的要求)。
如果不想卸载重装,也可以尝试强制升级命令,但卸载重装的方式更稳妥,能避免版本依赖冲突:
apk upgrade nodejs npm --no-cache --repository="http://dl-cdn.alpinelinux.org/alpine/v3.20/main/" --allow-untrusted
内容的提问来源于stack exchange,提问作者JB11
相关产品推荐
相关产品推荐

