无法在节点上构建节点 re2:12.18.1-高山码头工人映像



我尝试在最新的节点 12.18.1 lts alpine 上构建 node-re2,以便以后可以将二进制文件复制到生产映像。不幸的是,它无法编译。我错过了什么?使用RUN apk add --no-cache gcompatRUN apk add --no-cache libc6-compat安装 libc6-compat 或 gcompat 没有帮助,即使 ld-linux-x86-64.so.2 文件应该在软件包中。

我的码头工人文件是

FROM node:12.18.1-alpine as re2-builder
WORKDIR /opt
RUN apk add python make g++ 
&& npm install re2@1.15.0

构建时我得到这个:

Writing to build/Release/re2.node ...
> re2@1.15.0 verify-build /opt/node_modules/re2
> node scripts/verify-build.js
internal/modules/cjs/loader.js:1188
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /opt/node_modules/re2/build/Release/re2.node)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/opt/node_modules/re2/re2.js:3:13)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! re2@1.15.0 verify-build: `node scripts/verify-build.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the re2@1.15.0 verify-build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-06-19T21_07_53_335Z-debug.log
Building locally ...
> re2@1.15.0 rebuild /opt/node_modules/re2
> node-gyp rebuild
...

Alpine 使用 musl libc,其共享库加载器名称为ld-musl-x86_64.so.1位于/lib目录中。ld-linux-x86-64.so.2是 glibc 共享库加载器,用于 Ubuntu 或其他标准发行版。有兼容层包名称libc6-compat请尝试添加它。

apk add libc6-compat

或者尝试对原始文件进行符号链接

ln -s /lib/ld-musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2 

这应该可以解决。

Error loading shared library ld-linux-x86-64.so.2: No such file or directory

最新更新