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

在WSL2 Ubuntu22.04编译Julia1.9.2源码后make testall失败求助

修复WSL2 Ubuntu22.04下Julia 1.9.2编译后make testall的Distributed模块测试失败问题

先给结论:你的安装没损坏

make成功且程序能正常运行,说明Julia核心功能没问题,只是分布式相关测试因为WSL2的NAT网络特性卡壳了,不用直接判定安装损坏。

针对性修复步骤

1. 排查WSL2本地回环与网络配置

WSL2默认用NAT网络,分布式测试依赖本地进程间TCP通信,可能存在回环访问异常:

  • 先在WSL终端执行ping 127.0.0.1,确认本地回环能正常连通;
  • 如果ping不通,编辑/etc/wsl.conf添加以下内容:
    [network]
    generateHosts = false
    generateResolvConf = false
    
    然后在Windows命令行执行wsl --shutdown重启WSL,再手动配置hosts:
    echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
    

2. 单独测试Distributed模块缩小范围

别直接跑make testall,先单独测Distributed模块定位问题:

./julia -e 'using Pkg; Pkg.test("Distributed")'

如果还是报错,针对性排查TCPSocket错误:

  • 检查端口占用:sudo lsof -i :9000(分布式测试常用端口),有占用就杀掉对应进程;
  • 手动指定端口范围启动worker进程,验证基础TCP通信:
    ./julia -e 'using Distributed; addprocs(2; port_range=(9001,9010)); @everywhere println("Hello"); rmprocs(workers())'
    
    能正常输出Hello说明基础通信没问题,再回头分析测试的具体报错细节。

3. 重新编译时调整配置

如果上面的方法没用,清理编译产物后重新编译,指定适配WSL的选项:

make clean
make USE_DISTRO=1 USE_SYSTEM_LLVM=0

USE_DISTRO=1让Julia调用系统依赖,减少编译时的网络配置冲突;USE_SYSTEM_LLVM=0用Julia自带的LLVM,避免系统版本不兼容引发的问题。

4. 临时跳过Distributed测试(非必要)

如果用不到分布式功能,或者只想验证其他模块正常,可以单独测试除Distributed外的所有模块:

./julia -e 'using Pkg; for pkg in keys(Pkg.dependencies())
    if pkg != "Distributed"
        try
            Pkg.test(pkg)
        catch e
            println("Test failed for $pkg: $e")
        end
    end
end'

额外注意点

  • Windows防火墙可能拦截WSL内的TCP连接,检查防火墙是否允许WSL相关的网络请求;
  • 把WSL的Ubuntu系统更新到最新状态:sudo apt update && sudo apt upgrade -y,避免旧版本依赖拖后腿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:48