Bazel在代理后构建

6
我希望跟随tensorflow的示例来构建generate_streaming_test_wav以生成测试wav文件。我的bazel版本是0.16.1。
问题在于当我使用命令bazel run tensorflow/examples/speech_commands:generate_streaming_test_wav时,出现以下错误信息:
xxx@xxx:~/kws/tensorflow-0911$ bazel run tensorflow/examples/speech_commands:generate_streaming_test_wav
Starting local Bazel server and connecting to it...
ERROR: error loading package '': Encountered error while reading extension file 'closure/defs.bzl': no such package '@io_bazel_rules_closure//closure': Error downloading [https://mirror.bazel.build/github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz, https://github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz] to /home/janet/.cache/bazel/_bazel_janet/2d14dc1ff5782da202e00efcc3cd86bc/external/io_bazel_rules_closure/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz: All mirrors are down: []
ERROR: error loading package '': Encountered error while reading extension file 'closure/defs.bzl': no such package '@io_bazel_rules_closure//closure': Error downloading [https://mirror.bazel.build/github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz, https://github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz] to /home/janet/.cache/bazel/_bazel_janet/2d14dc1ff5782da202e00efcc3cd86bc/external/io_bazel_rules_closure/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz: All mirrors are down: []
INFO: Elapsed time: 57.573s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)
FAILED: Build did NOT complete successfully (0 packages loaded)

然而,我可以使用wget下载这两个包。 1.https://mirror.bazel.build/github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz 2.https://github.com/bazelbuild/rules_closure/archive/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz 我认为我的网络应该没问题。我不知道为什么不能下载这些文件。
非常感谢您的任何想法或建议!
3个回答

6

如果您知道代理服务器,您应该能够设置:

export HTTPS_PROXY=http://me:mypassword@myproxyserver.domain.com:myport
export HTTP_PROXY=http://me:mypassword@myproxyserver.domain.com:myport

然后再次运行bazel build。

如果您不知道wget使用的代理服务器,请检查/etc/wgetrc或~/.wgetrc

关于HTTPS_PROXY和HTTP_PROXY是大写还是小写,我看到了一些相互矛盾的说法,所以您可以尝试同时设置两者。 (有些人使用unset来删除小写设置。请参见:https://github.com/bazelbuild/bazel/issues/587#issuecomment-412531604


嗨,William,我已经尝试了export ...命令,但是无论是大写还是小写都不起作用。我注意到我可以通过wget下载这些文件,但是我的~/.wgetrc文件中没有代理设置。还有其他想法吗?谢谢。 - Jean Lin

6

创建一个名为“dist”的文件夹。

现在无论 Bazel 无法下载的 URL 是什么,都可以在该文件夹内使用 wget 进行下载(wget 通常与大多数代理一起使用)。

然后运行:

'bazel build ...... --distdir  dist'

它将从dist获取软件包并开始编译。


我已经完全按照这样做了 - 但是bazel仍然尝试通过http下载 - 所以要么这不是完整的答案,要么还需要另一个设置? - OneMoreNerd
你需要一个一个地下载软件包...直到所有的软件包都被下载完成。 - Alok Prasad

1
这可能是Bazel存储库规则中的一个错误。如果您能够提交错误报告,那就太好了!
作为一种解决方法,请将下载的归档文件提取到某个地方,并将WORKSPACE文件中的io_bazel_rules_closure规则替换为指向您提取归档文件的目录的local_repository规则。

谢谢László。解决方法很有用。但是,由于tensorflow在以下步骤中应用了他们的规则(tf_http_archive),因此构建过程仍然停止。您有任何想法如何解决吗?如果您有,我想提出另一个问题。 - Jean Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接