Manjaro系统运行node-webcrypto-ossl提示缺少GLIBC_2.32如何解决
问题根因
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found.
该报错由node-webcrypto-ossl模块的预编译二进制包适配版本过低导致:模块官方提供的预编译包基于GLIBC 2.32版本构建,而Manjaro作为滚动发行版预装的GLIBC 2.33不向前兼容低版本编译的二进制文件。降级系统GLIBC属于高危操作,会破坏系统全局依赖链,绝对不推荐使用。
可行解决方法
方案1:替换为Node.js内置Web Crypto API
Node.js 15.0及以上版本已经原生兼容Web Crypto标准,无需依赖任何第三方模块,直接修改项目中调用node-webcrypto-ossl的逻辑为调用内置crypto.webcrypto即可,可彻底规避版本兼容问题。如果当前Node.js版本低于15.0,先升级到16.x及以上LTS版本即可使用该内置能力。
方案2:本地源码编译node-webcrypto-ossl
如果必须保留原有node-webcrypto-ossl调用逻辑,可以强制包管理器从源码编译适配当前系统GLIBC版本的二进制文件:
- 先安装编译依赖
$ sudo pacman -S base-devel openssl python3 - 项目目录下执行编译安装
$ npm install node-webcrypto-ossl --build-from-source - 若使用yarn,执行
$ yarn add node-webcrypto-ossl --force-build-from-source
编译完成后生成的二进制文件将适配你当前的GLIBC 2.33版本,不会再触发版本缺失报错。
方案3:容器隔离运行
如果上述方案都不满足需求,可以通过Docker容器封装运行环境:
- 基础镜像选择
ubuntu:20.04,该版本默认预装GLIBC 2.32,可直接兼容node-webcrypto-ossl预编译包 - 将项目代码挂载到容器内安装依赖运行即可,不会对宿主机系统造成任何修改
内容的提问来源于stack exchange,提问作者grabantot
相关产品推荐
相关产品推荐

