gpt4 book ai didi

node.js - 在 alpine 上从源代码安装 node.js

转载 作者:行者123 更新时间:2023-12-03 21:45:55 31 4
gpt4 key购买 nike

我正在尝试在 alpine docker 上从源代码安装 Node 。wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xztar -xvf node-v14.4.0-linux-x64.tar.xz一旦我尝试运行它:

~/node-v14.4.0-linux-x64/bin # ./node 
sh: ./node: not found
虽然文件在这里,但我有权限并且它是可执行的
~/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
当我在 ubuntu 上执行相同的操作时,它会起作用。

最佳答案

发生这种情况是因为 alpine 使用 musl 而不是 glibc ,并且从 Node 网站分发的二进制文件是针对 glibc 构建的。
以下是针对您的问题的一些解决方案,按优先顺序(以及原因):

  • 使用 node's official image 而不是尝试从 alpine 基础镜像安装它 :这是因为在拥有工作 Node 镜像(证书、tls 库等)之前有不同的依赖项和要设置的内容。这是最推荐的。
  • 通过 apk 安装 Node : Node 在 alpine 的官方包管理器 apk 中可用,您只需运行 apk add nodejs 即可安装它。这里唯一的问题是存储库中可用的版本是 LTS(截至 2020 年 10 月 7 日为 12.18.4)。
  • 在 alpine 中为 glibc 安装/构建兼容层: 这根本不推荐,因为 alpine 是在 musl 上构建的,并且运行 glibc 不是一个好的做法,可能会导致事情崩溃。即使安装官方的libc6-compat也可能会出现问题:

  • 使用 libc6-compat 运行 Node :
    $ ./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
    使用 this answer'sglibc 的建议运行 Node :
    $ ./node
    ./node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
    坚持 Node 的官方形象(解决方案 1),事情应该会很好:)

    关于node.js - 在 alpine 上从源代码安装 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64243684/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com