【问题标题】:[tensorflow],[bazel] Compile Tensorflow behind a HTTP/HTTPS Proxy - HTTP 502 Bad gateway[tensorflow],[bazel] 在 HTTP/HTTPS 代理后面编译 Tensorflow - HTTP 502 Bad gateway
【发布时间】:2018-10-18 17:05:53
【问题描述】:

我知道这不是新问题,但是在尝试从源代码编译 tensorflow 时遇到很多麻烦。这似乎是一个“代理背后的bazel”问题。

  • 我在 Fedora28 上编译
  • 我正在使用 bazel 0.17.2(作为 rpm 从 vbatts-bazel yum 存储库安装)
  • 我尝试从 github.com/tensorflow/tensorflow.git 编译当前的master

我在 HTTP/HTTPS 代理后面工作。环境有 http_proxy/https_proxy 集(通过/etc/environment,所以每个人都得到了envvar)。对于测试,我将 envvar 设置为小写和大写。通过此代理使用 git/https、yum 或 wget 是可以的,因为这些 envvar 已设置。

在编译 tensorflow 时(在 ./configure 步骤之后),我得到一个明确的 HTTP 错误:

[user22@vm0 tensorflow]$ bazel build   --config=opt //tensorflow/tools/pip_package:build_pip_package
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/user22/.cache/bazel/_bazel_user22/673c993ff8d0b73d5fcaf03ddf761476/external/io_bazel_rules_closure/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz: All mirrors are down: ***[Unable to tunnel through proxy. Proxy returns "HTTP/1.1 502 Bad Gateway"]***
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/user22/.cache/bazel/_bazel_user22/673c993ff8d0b73d5fcaf03ddf761476/external/io_bazel_rules_closure/dbb96841cc0a5fb2664c37822803b06dab20c7d1.tar.gz: All mirrors are down: ***[Unable to tunnel through proxy. Proxy returns "HTTP/1.1 502 Bad Gateway"]***
INFO: Elapsed time: 14.841s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)

问题显然是这个 HTTP/1.1 502 错误。我知道其他人在代理后面使用 bazel 时遇到了问题,但我确实没有发现对这个 HTTP 错误的引用。关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: tensorflow proxy bazel


    【解决方案1】:

    “502 Bad gateway”错误通常意味着 bazel 要求代理做一些不允许做的事情 - 特别是,bazel 不会直接向代理发出 GET 请求,而是会直接要求一个 CONNECT 命令(见strace):

    sendto(220, "CONNECT mirror.bazel.build:443 HTTP/1.1\r\nUser-Agent: Java/1.8.0_181\r\nHost: mirror.bazel.build\r\nAccept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\nProxy-Connection: keep-alive\r\n\r\n", 189, 0, NULL, 0 <unfinished ...>

    您的代理配置需要更新以允许 CONNECT 命令。

    另外,一些bazel github issues 表示您可以查看错误并自行下载内容,但这似乎并没有很好地结束。

    【讨论】:

    • 实际上,似乎 https_proxy / HTTPS_PROXY 只是被 bazel 忽略了。完全删除 envvar 会导致同样的问题。
    • fedora 28 copr 中的 bazel 版本确实使用了变量,最​​明显的是,如果设置了代理变量但没有设置 no_proxy,它会打印一个警告(说它会设置 no_proxy本身) - 或者只是没有代理设置你不会得到这个错误;)但是每次更改变量时都需要小心停止服务器,运行新的 bazel 命令不会更新代理设置。
    • 其实我在环境中设置了no_proxy(也设置了NO_PROXY),告诉localhost abd 127.0.0.1 + local ipaddr不应该通过代理。无论如何,它的行为是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多