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

自托管Linux Runner执行Maven发布命令时nx依赖报错的解决办法

解决自托管Linux Runner上Nx Native绑定加载失败导致Maven构建失败的问题

针对你遇到的/tmp/nx-native-file-cache-xxx/nx.linux-x64-gnu.node: failed to map segment from shared object错误,以下是几个可行的解决思路:

  • 检查/tmp目录的挂载权限
    大部分Linux系统默认会给/tmp挂载noexec选项,禁止执行其中的文件,这会直接导致Nx的native模块无法运行。

    1. 先查看/tmp的挂载参数:mount | grep /tmp,如果输出里有noexec,就需要调整
    2. 修改/etc/fstab文件,找到/tmp对应的行,去掉noexec参数,然后执行mount -o remount,rw,exec /tmp重新挂载
    3. 要是不想修改系统配置,也可以临时指定Nx的缓存目录到有执行权限的路径:export NX_NATIVE_CACHE_DIR=/var/tmp/nx-cache,确保这个目录存在且当前用户有读写权限
  • 清理Nx缓存和依赖
    缓存损坏或者依赖安装不完整也会触发这类错误:

    1. 删除本地的node_modules和Nx缓存目录:rm -rf node_modules .nx
    2. 重新安装依赖:npm install(或yarn install,根据你的包管理器来)
    3. 再重新执行Maven构建命令
  • 验证Runner用户的权限
    确保执行Maven命令的自托管Runner用户对/tmp目录有足够权限:

    1. 切换到Runner用户:su - runner-user(替换成实际的用户名)
    2. 测试/tmp的执行权限:touch /tmp/test_exec && chmod +x /tmp/test_exec && ./tmp/test_exec,如果能正常执行就没问题,否则需要调整/tmp的权限或者给Runner用户添加对应权限
  • 调整Nx版本
    当前使用的Nx 19.1.1可能和自托管系统存在兼容性问题:

    1. 尝试升级到最新稳定版:npm install nx@latest --save-dev
    2. 或者降级到之前验证过能正常运行的版本,比如npm install nx@18.3.5 --save-dev
    3. 重新安装依赖后再执行构建
  • 补充系统依赖库
    Nx的native模块依赖系统的动态链接库(比如glibc),如果自托管系统的库版本过低会报错:

    1. 查看系统glibc版本:ldd --version,对比GitHub Actions的ubuntu-latest(一般是22.04,对应glibc 2.35)
    2. 如果版本差距大,Debian/Ubuntu系可以安装兼容库:apt-get install libc6-dev,或者考虑升级系统版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:57:13