ogb*_*jnr 4 node.js docker alpine-linux
我正在尝试在 alpine docker 上从源代码安装节点。
wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz
tar -xvf node-v14.4.0-linux-x64.tar.xz
一旦我尝试运行它:
~/node-v14.4.0-linux-x64/bin # ./node
sh: ./node: not found
Run Code Online (Sandbox Code Playgroud)
虽然文件在这里,但我有权限并且它是可执行的
~/node-v14.4.0-linux-x64/bin # ls -la
total 70376
drwxr-xr-x 2 root root 4096 Oct 7 11:53 .
drwxr-xr-x 6 1001 1001 4096 Oct 7 11:53 ..
-rwxr-xr-x 1 root root 72052312 Jun 2 14:33 node
lrwxrwxrwx 1 root root 38 Oct 7 11:53 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root 38 Oct 7 11:53 npx -> ../lib/node_modules/npm/bin/npx-cli.js
Run Code Online (Sandbox Code Playgroud)
当我在 ubuntu 上执行相同的操作时,它会起作用。
发生这种情况是因为 alpine 使用musl而不是glibc,并且从节点网站分发的二进制文件是针对glibc.
以下是针对您的问题的一些解决方案,按优先顺序(以及原因):
使用节点的官方映像,而不是尝试从 alpine 基础映像安装它:这是因为在拥有工作节点映像(证书、tls 库等)之前有不同的依赖项和要设置的内容。这是最推荐的。
通过apk: node安装 node可在 alpine 的官方包管理器 apk 中找到,您只需运行apk add nodejs. 这里唯一的问题是存储库中可用的版本是 LTS(截至 2020 年 10 月 7 日为 12.18.4)。
为glibcin alpine安装/构建兼容性层:完全不推荐这样做,因为 alpine 是在构建musl和运行时glibc 进行的,这不是一个好的做法,可能会导致事情崩溃。即使安装官方libc6-compat也可能会出现问题:
使用 libc6-compat 运行节点:
$ ./node
Error relocating ./node: gnu_get_libc_version: symbol not found
Error relocating ./node: __register_atfork: symbol not found
Error relocating ./node: __strdup: symbol not found
Error relocating ./node: setcontext: symbol not found
Error relocating ./node: makecontext: symbol not found
Error relocating ./node: backtrace: symbol not found
Error relocating ./node: getcontext: symbol not found
Run Code Online (Sandbox Code Playgroud)
使用此答案的建议运行节点glibc:
$ ./node
./node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
坚持节点的官方形象(解决方案 1),事情应该会很好:)
您需要下载一个针对 musl 构建的非官方版本
wget https://unofficial-builds.nodejs.org/download/release/v14.4.0/node-v14.4.0-linux-x64-musl.tar.xz
Run Code Online (Sandbox Code Playgroud)
注意:非官方构建链接在Node.js 项目中,从我的角度来看,这并不代表安全问题。
| 归档时间: |
|
| 查看次数: |
3490 次 |
| 最近记录: |