ちょっとハマったのでメモ。
zsh + virtualenv という環境だと、インストールするのにちょっと注意が必要みたいです。
1. インストールする
まずは、以下の URL の手順に沿ってコマンドを実行します。
curl https://sdk.cloud.google.com | bash
zsh だけどよくわかんないので | bash
はそのままにして実行します。
すると...
Directory to extract under (this will create a directory google-cloud-sdk) (/Users/*****): tar -C /Users/***** -xvf /var/folders/hq/c40z6hdx2sb23y2gy8jpzh480000gp/T/tmp.XXXXXXXXXX.g0mBaDMo/google-cloud-sdk.tar.gz x google-cloud-sdk/ x google-cloud-sdk/help/ x google-cloud-sdk/help/text.long/ x google-cloud-sdk/help/text.long/gcloud_components_update x google-cloud-sdk/help/text.long/gcloud_components_restore ... /Users/*****/google-cloud-sdk/install.sh Welcome to the Google Cloud SDK! Traceback (most recent call last): File "/Users/*****/google-cloud-sdk/bin/bootstrapping/install.py", line 8, in <module> import bootstrapping File "/Users/*****/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 9, in <module> import setup File "/Users/*****/google-cloud-sdk/bin/bootstrapping/setup.py", line 44, in <module> from googlecloudsdk.core.util import platforms File "/Users/*****/google-cloud-sdk/bin/bootstrapping/../../lib/googlecloudsdk/core/util/platforms.py", line 5, in <module> import collections ImportError: No module named collections
あれ、なんかエラー出てとまってしまってますね。。。
ファイルは/Users/*****/
(*****
はPC名) にダウンロードされてるので、
/google-cloud-sdk/bin/bootstrapping/install.py
を見てみます。
#!/bin/sh # # Copyright 2013 Google Inc. All Rights Reserved. # echo Welcome to the Google Cloud SDK! ... "$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"
色々書いてますが、要するに最後の /bin/bootstrapping/install.py
を実行していることがわかります。
ので、このスクリプトを直接実行してみます。
~/google-cloud-sdk $ bin/bootstrapping/install.py The Google Cloud SDK is currently in developer preview. To help improve the quality of this product, we collect anonymized data on how the SDK is used. You may choose to opt out of this collection now (by choosing 'N' at the below prompt), or at any time in the future by running the following command: gcloud config set --scope=user disable_usage_reporting true Do you want to help improve the Google Cloud SDK (Y/n)? n This will install all the core command line tools necessary for working with the Google Cloud Platform. The following components will be installed: ------------------------------------------------------------------------------------------- | BigQuery Command Line Tool | 2.0.18 | < 1 MB | | BigQuery Command Line Tool (Platform Specific) | 2.0.18 | < 1 MB | | Cloud DNS Admin Command Line Interface | 2014.11.06 | < 1 MB | | Cloud SDK Core Command Line Tools | 1 | | | Cloud SDK Core Libraries (Platform Specific) | 2014.10.20 | < 1 MB | | Cloud SQL Admin Command Line Interface | 2014.11.18 | < 1 MB | | Cloud Storage Command Line Tool | 4.6 | 2.1 MB | | Cloud Storage Command Line Tool (Platform Specific) | 4.6 | < 1 MB | | Compute Engine Command Line Interface | 2014.11.18 | < 1 MB | | Compute Engine Command Line Tool (deprecated) | 1.16.5 | < 1 MB | | Compute Engine Command Line Tool (deprecated) (Platform Specific) | 1.16.5 | < 1 MB | ------------------------------------------------------------------------------------------- Performing in place update... Installing: BigQuery Command Line Tool ... Done Installing: BigQuery Command Line Tool (Platform Specific) ... Done Installing: Cloud DNS Admin Command Line Interface ... Done Installing: Cloud SDK Core Command Line Tools ... Done Installing: Cloud SDK Core Libraries (Platform Specific) ... Done Installing: Cloud SQL Admin Command Line Interface ... Done Installing: Cloud Storage Command Line Tool ... Done Installing: Cloud Storage Command Line Tool (Platform Specific) ... Done Installing: Compute Engine Command Line Interface ... Done Installing: Compute Engine Command Line Tool (deprecated) ... Done Installing: Compute Engine Command Line Tool (deprecated) (Platform Specific) ... Done Done! The Google Cloud SDK installer will now prompt you to update an rc file to bring the Google Cloud CLIs into your environment. Enter path to an rc file to update, or leave blank to use [/Users/*****/.bash_profile]: /Users/*****/.zshrc Modify profile to update your $PATH? (Y/n)? Y Modify profile to enable bash completion? (Y/n)? Y
お、無事終わったっぽい。
途中、Google Cloud SDK の CLI のパスを追加するファイルを聞かれるので
.bash_profile
でなく、 ~/.zshrc
を指定しました。
2. SDK へパスを通す
では、.zshrc
を更新します。
~/google-cloud-sdk $ source ~/.zshrc /Users/*****/google-cloud-sdk/path.bash.inc:3: = not found /Users/*****/google-cloud-sdk/completion.bash.inc:8: command not found: complete /Users/*****/google-cloud-sdk/completion.bash.inc:19: parse error near `]]'
うーん、なんかエラーが出てる。。。
.zshrc
を見ます。
.zshrc
# The next line updates PATH for the Google Cloud SDK. source '/Users/*****/google-cloud-sdk/path.bash.inc' # The next line enables bash completion for gcloud. source '/Users/*****/google-cloud-sdk/completion.bash.inc'
上が $PATH
に CLI の場所を追加するためのファイル、
下がシェルコマンド補完のためのファイルのようです。
とりあえずどちらも bash
になっている箇所を zsh
に変えます。
.zshrc (修正後)
# The next line updates PATH for the Google Cloud SDK. source '/Users/*****/google-cloud-sdk/path.zsh.inc' # The next line enables bash completion for gcloud. source '/Users/*****/google-cloud-sdk/completion.zsh.inc'
もう一度実行。
~/google-cloud-sdk $ source ~/.zshrc bashcompinit:126: parse error near `|' /Users/*****/google-cloud-sdk/completion.zsh.inc:11: command not found: complete /Users/*****/google-cloud-sdk/completion.zsh.inc:46: command not found: complete /Users/*****/google-cloud-sdk/completion.zsh.inc:47: command not found: complete /Users/*****/google-cloud-sdk/completion.zsh.inc:48: command not found: complete
CLI へのパスは通ったみたいなんですが、下のコマンド補完の方はエラーが消えません。
で、結局原因がよくわからないのと、このままでも gcloud
コマンドは使えるので
下の行は一旦コメントアウトしました。
.zshrc (最終的に...)
# The next line updates PATH for the Google Cloud SDK. source '/Users/*****/google-cloud-sdk/path.zsh.inc' # The next line enables bash completion for gcloud. # source '/Users/*****/google-cloud-sdk/completion.zsh.inc'
この状態で
$ gcloud auth login
を実行し、Google アカウントでログインすると...
というわけで、無事にインストールできました。
補足その1
zsh で Google Cloud SDK をインストールをする方法についてはこちらの記事を参考にしました。
ただ、現在は path.zsh.inc
というファイルは自動で作成されるらしく
.zshrc
のパスを変更するだけでうまくいきました。
補足その2
最初の、インストールに失敗したところについて。
こんな Issue がありました。
これによると、
Basically the problem is that the virtualenv lib directory does not include the argparse module (even though it is a standard library). Normally virtualenv falls back to /usr/lib/python2.7 to find argparse, but we run all our scripts with the -S option to disable all site packages. With this option, virtualenv no longer falls back to /usr/lib/python2.7 (even for standard libraries) and the import fails.
- virtualenv の lib ディレクトリには標準ライブラリが含まれない
- が、普通だと
/usr/lib/python2.7
にフォールバックするので問題にならない - python に
-S
オプションをつけるとこのフォールバックをしないようになるので、結果としてNo module named *****
エラーになる
といったところでしょうか。
試しに、install.py
の
which $CLOUDSDK_PYTHON echo $CLOUDSDK_PYTHON_ARGS echo $CLOUDSDK_ROOT_DIR "$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"
それぞれの変数を見てみると、
/Users/*****/.pyenv/shims/python -S /Users/*****/google-cloud-sdk
というわけで、virtualenv の python を -S
オプションをつけて実行していることがわかります。
で、これについてはどうしようもないので、
virtualenv で作成した python を使わず、システムデフォルトの(?)python を使うとうまくいきます。
$ pyenv global 2.7.5 $ curl https://sdk.cloud.google.com | bash
インストールの時だけ切り替えてもいいのかも。