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

时间:2017-05-20 14:52:59

标签: python macos google-cloud-sdk

我正在尝试安装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')

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

3 个答案:

答案 0 :(得分:28)

关闭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

答案 1 :(得分:1)

禁用IPV6:

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

答案 2 :(得分:0)

禁用ipv6对我不起作用。在开始工作之前,我尝试了很多方法。 在解决问题之前,我已升级到Mojave OSX。

我更新了here所述的Mac标头:

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让我重新设置了一些代理配置,这可能是一开始的主要问题。