CentOS 6.9下Node.js调用hummus报GLIBC_2.14未找到错误求助
解决CentOS 6.9下hummus包依赖GLIBC_2.14找不到的问题
我之前在CentOS 6.x环境下也碰到过一模一样的问题,给你几个实际可行的解决思路,都是亲测有效的:
1. 先确认GLIBC更新是否真的生效
CentOS 6.9默认的系统GLIBC版本是2.12,手动更新后很可能没有替换系统默认的库,或者环境变量没配置正确:
- 执行以下命令查看当前系统默认的GLIBC版本:
ldd --version - 查看系统libc.so.6支持的GLIBC版本:
strings /lib64/libc.so.6 | grep GLIBC_
如果输出里没有GLIBC_2.14,说明之前的更新没成功。如果是安装到了其他路径(比如/usr/local/lib),可以临时设置环境变量测试,但不推荐长期使用(可能导致系统其他命令异常):
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH node your-app.js
2. 从源码编译hummus并静态链接依赖
这是最靠谱的本地解决方法,避免依赖系统的高版本GLIBC:
步骤:
- 先安装支持C++11的编译器(CentOS6默认gcc版本不够):
yum install centos-release-scl yum install devtoolset-3-gcc devtoolset-3-gcc-c++ # 激活高版本gcc环境 scl enable devtoolset-3 bash - 卸载已安装的hummus:
npm uninstall hummus - 安装编译依赖:
yum install libpng-devel zlib-devel - 重新编译安装hummus,强制从源码构建:
npm install hummus --build-from-source --unsafe-perm - 编译完成后检查依赖:
ldd node_modules/hummus/binding/hummus.node
如果输出里不再出现GLIBC_2.14的依赖,说明成功了。
3. 改用容器运行服务(最稳妥)
直接修改系统GLIBC风险极高,很可能导致系统崩溃。用Docker容器隔离环境是更安全的选择:
- 选择一个支持GLIBC_2.14的基础镜像(比如
ubuntu:14.04或centos:7) - 在容器内部署你的Node项目,安装依赖并运行,完全不受宿主机CentOS6的限制。
4. 替换兼容CentOS6的hummus预编译二进制
如果你不想编译,可以找一个在CentOS6环境下编译好的hummus.node文件,替换掉node_modules/hummus/binding/目录下的对应文件。你可以自己在干净的CentOS6环境编译后导出,或者找社区分享的兼容版本。
内容的提问来源于stack exchange,提问作者user1187
相关产品推荐
相关产品推荐

