You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL9+Node.js20下zeromq报sodium_init未定义符号错误求助

问题解决:zeromq运行时出现sodium_init未定义错误

错误原因

  • zeromq v6.0.0-beta.16作为开发预览版,其预编译二进制包可能依赖特定版本的libsodium,与RHEL9系统默认提供的libsodium版本不兼容,导致运行时无法找到符号。
  • npm安装zeromq时,未正确链接系统已安装的libsodium库,可能默认使用了包内置的libsodium但编译环节出现异常,或环境变量未引导编译器定位到系统库。

解决方案

1. 彻底清理并重新编译安装zeromq

  • 卸载现有zeromq包:
    npm uninstall zeromq
    
  • 删除项目依赖目录和锁文件:
    rm -rf node_modules package-lock.json
    
  • 清理npm缓存:
    npm cache clean --force
    
  • 安装系统libsodium开发依赖:
    sudo dnf install libsodium libsodium-devel
    
  • 设置环境变量强制使用系统libsodium编译:
    export PKG_CONFIG_PATH=/usr/lib64/pkgconfig
    export LIBSODIUM_INCLUDE_DIR=/usr/include
    export LIBSODIUM_LIB_DIR=/usr/lib64
    
  • 从源码重新安装zeromq beta版:
    npm install zeromq@6.0.0-beta.16 --build-from-source
    

2. 尝试降级到zeromq稳定版

若beta版兼容性问题无法解决,切换到经过验证的稳定版本:

npm install zeromq@5.2.0

之后运行npm start测试。

3. 验证Node.js版本兼容性

Node.js v20属于较新版本,zeromq beta版可能对其支持不完善,可临时切换到Node.js 18 LTS版本测试:

  • 若使用nvm管理Node版本:
    nvm install 18 && nvm use 18
    
  • 重新安装zeromq并运行项目。

4. 验证库链接状态

安装完成后,检查zeromq.node是否正确链接系统libsodium:

ldd /home/fcampion/COMINT/comint-stub/node_modules/zeromq/build/Release/zeromq.node | grep sodium

若输出类似libsodium.so.23 => /usr/lib64/libsodium.so.23的内容,说明链接成功;否则需重新检查环境变量和依赖安装情况。

内容的提问来源于stack exchange,提问作者prophet_italy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:55:14