Google Cloud SDK 安装在 OS X 上:(gcloud.components.list) 无法从服务器获取组件列表

Google Cloud SDK install on OS X: (gcloud.components.list) Failed to fetch component listing from server

我正在尝试安装 Google Cloud SDK (https://cloud.google.com/sdk/docs/quickstart-mac-os-x) 并收到此错误:
ERROR: (gcloud.components.list) Failed to fetch component listing from server. Check your network settings and try again.

已经尝试更新 OpenSSL 和相应的 Python(也尝试过 Python 2.7.8):

openssl version  
OpenSSL 1.0.2k  26 Jan 2017

python -V
Python 2.7.13

Python 也在使用这个 OpenSSL 版本:

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.2k  26 Jan 2017'

我是 运行 mac OS 10.12.4

我也尝试过 brew cask install google-cloud-sdk,它实际上只是下载普通版本并执行 install.sh 脚本。结果相同。

进一步调试显示,它无法加载 https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json 并抛出此错误:URLError: <urlopen error timed out>。 通过 Python 直接加载此文件有效:

urllib2.urlopen('https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json')

有什么想法吗?还有任何提示如何进一步调试它,将不胜感激:)

关闭 ipv6 支持后,该工具非常有效。看起来 gcloud 无法正常使用 ipv6...

禁用 ipv6:

networksetup -setv6off Wi-Fi

启用 ipv6:

networksetup -setv6automatic Wi-Fi

注意:在对此进行调查时,我还能够通过使用非常长的超时(120 秒)使其正常工作。但是,对于大多数用例来说,这是不切实际的,因为它会为每个命令引入长时间延迟。

超时位于google-cloud-sdk/lib/googlecloudsdk/core/updater/installers.py第36行TIMEOUT_IN_SEC

禁用 ipv6 对我不起作用。在让它工作之前,我尝试了很多东西。 在遇到问题之前,我已升级到 mojave OSX。

我更新了 mac headers here:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

重新启动然后重新安装python2: brew reinstall python2

此时问题依旧,决定重装gcloud,遇到this: 我使用的是 zsh,所以我添加了以下 .zshrc:

source <PATH to gcloud sdk>/google-cloud-sdk/path.zsh.inc
source <PATH to gcloud sdk>/google-cloud-sdk/completion.zsh.inc

对于bash:

source <PATH to gcloud sdk>/google-cloud-sdk/path.bash.inc
source <PATH to gcloud sdk>/google-cloud-sdk/completion.bash.inc`

然后 gcloud init 让我重置了一些代理配置,这可能是一开始的主要问题。

禁用 IPV6 :

sysctl net.ipv6.conf.all.disable_ipv6=1