AIYUAN(Allison) 2026-03-25 10:17 采纳率: 0%
浏览 5

go_sdk无法fetch(JAX)

我在编译JAX的时候遇到了go_sdk无法fetch的问题
run:

python build/build.py build --wheels=jaxlib --local_xla_path=/work/xla

error messasge

ERROR: /root/.cache/bazel/_bazel_root/96880b6bf381c090ea570df52d42a968/external/io_bazel_rules_go/go/private/sdk.bzl:71:21: An error occurred during the fetch of repository 'go_sdk':
   Traceback (most recent call last):
        File "/root/.cache/bazel/_bazel_root/96880b6bf381c090ea570df52d42a968/external/io_bazel_rules_go/go/private/sdk.bzl", line 71, column 21, in _go_download_sdk_impl
                ctx.download(
Error in download: java.io.IOException: Error downloading [https://golang.org/dl/?mode=json&include=all, https://golang.google.cn/dl/?mode=json&include=all] to /root/.cache/bazel/_bazel_root/96880b6bf381c090ea570df52d42a968/external/go_sdk/versions.json: Read timed out
ERROR: Analysis of target '//jaxlib/tools:jaxlib_wheel' failed; build aborted: java.io.IOException: Error downloading [https://golang.org/dl/?mode=json&include=all, https://golang.google.cn/dl/?mode=json&include=all] to /root/.cache/bazel/_bazel_root/96880b6bf381c090ea570df52d42a968/external/go_sdk/versions.json: Read timed out

And I already used a vpn
Does anyone know how to resolve this?tks

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-03-25 10:19
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你遇到的问题是 Go SDK 在下载时超时,具体表现为 Bazel 在尝试从 https://golang.org/dl/https://golang.google.cn/dl/ 获取 Go SDK 的版本信息时发生 Read timed out 错误。即使你使用了 VPN,也可能是由于网络限制或 DNS 解析问题导致的。


    🔍 问题原因分析

    1. 网络连接不稳定或被防火墙限制
      尽管你使用了 VPN,但某些地区(尤其是中国)对 Google 的服务可能仍存在访问限制,或者 DNS 解析失败。

    2. Bazel 默认使用的下载源不可达
      Bazel 使用的是 https://golang.org/dl/https://golang.google.cn/dl/ 来获取 Go SDK 的版本信息,但这些链接在某些环境下无法正常访问。

    3. 缺少手动设置的 Go SDK 路径
      如果你已经指定了本地路径(如 --local_xla_path=/work/xla),但未正确配置 Go SDK 路径,Bazel 会尝试自动下载。


    ✅ 解决方案

    1. 手动指定 Go SDK 路径

    如果你已经下载了特定版本的 Go SDK,可以避免 Bazel 自动下载。

    修改编译命令如下:

    python build/build.py build --wheels=jaxlib --local_xla_path=/work/xla --go_sdk_path=/path/to/go/sdk
    

    注意:

    • /path/to/go/sdk 是你本地已有的 Go SDK 路径,例如 /usr/local/go
    • 如果你没有安装 Go SDK,建议先下载并解压一个 Go 版本(如 go1.20.6.linux-amd64.tar.gz)。

    2. 设置环境变量绕过下载

    你可以通过设置环境变量来告诉 Bazel 不要尝试下载 Go SDK:

    export GOROOT_BOOTSTRAP=/usr/local/go
    

    这个变量通常用于构建 Go 编译器本身,但在 JAX 构建中也有用处。


    3. 替换下载源为国内镜像(可选)

    如果你仍然希望使用 Bazel 自动下载,可以修改 Bazel 的配置文件,替换默认的 Go SDK 下载地址。

    修改 Bazel 配置文件

    创建或编辑以下文件:

    mkdir -p ~/.bazelrc.d/
    echo "build --override_repository=go_sdk=https://mirrors.tuna.tsinghua.edu.cn/goproxy" > ~/.bazelrc.d/go_sdk.bazelrc
    

    这个镜像源是清华大学的 Go 代理,可以加速下载。


    4. 检查网络和 DNS 设置

    • 确保你的 DNS 设置正确,可以尝试使用公共 DNS 如 8.8.8.81.1.1.1
    • 测试网络连接:运行以下命令检查是否能访问 https://golang.org/dl/
    curl -v https://golang.org/dl/
    

    如果返回错误或超时,说明网络有问题。


    5. 使用本地缓存(可选)

    如果你之前曾成功下载过 Go SDK,可以清理缓存并重新尝试:

    rm -rf /root/.cache/bazel
    

    然后重新运行构建命令。


    🧩 示例修改后的构建命令

    export GOROOT_BOOTSTRAP=/usr/local/go
    python build/build.py build --wheels=jaxlib --local_xla_path=/work/xla --go_sdk_path=/usr/local/go
    

    请根据你的实际 Go 安装路径调整 --go_sdk_path 参数。


    📌 总结

    | 问题 | 解决方法 | |------|----------| | Go SDK 下载超时 | 手动指定 --go_sdk_path 或使用国内镜像 | | 网络限制 | 更换 DNS 或使用 CDN 镜像 | | Bazel 自动下载失败 | 设置 GOROOT_BOOTSTRAP 或修改 .bazelrc |


    如果你仍然无法解决,请提供你当前的 Go SDK 版本和操作系统信息,我可以进一步帮助你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日