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