dnf経由でgsutilをインストール(Python3.9の環境)
gsutilがdnf経由でインストールできるようになっていたのでやってみたときの覚書。
環境: CentOS Stream 8, Python 3.9.7, gsutil 5.10
pip版gsutilをアンインストール
まずはpip経由でインストールしたのを削除する。
pip-autoremoveを使うと依存関係も含めていい感じにアンインストールしてくれるそうなので使ってみた。
# python -m pip install pip-autoremove
依存関係を確認してアンインストール。
# python -m pip show gsutil
Name: gsutilVersion: 5.10Summary: A command line tool for interacting with cloud storage services.Home-page: https://cloud.google.com/storage/docs/gsutilAuthor: Google Inc.Author-email: buganizer-system+187143@google.comLicense: Apache 2.0Location: /usr/lib/python3.9/site-packagesRequires: argcomplete, crcmod, fasteners, gcs-oauth2-boto-plugin, google-apitools, google-auth, google-reauth, httplib2, monotonic, pyOpenSSL, retry_decorator, sixRequired-by:
# pip-autoremove gsutil
依存関係も削除された。
確認してアップデートがあればやっておく。
# pip list
# pip list -o
# pip install --upgrade certifi requests setuptools urllib3 psycopg
dnf経由でgcloud cliをインストール
公式サイトを参考に。
repoファイルを作成する。teeコマンドを初めて使った。
確認
# less /etc/yum.repos.d/google-cloud-sdk.repo
gcloud cliをインストール
# dnf install google-cloud-cli
確認
# gcloud --version
Google Cloud SDK 389.0.0alpha 2022.06.03beta 2022.06.03bq 2.0.74bundled-python3-unix 3.9.12core 2022.06.03gsutil 5.10
「--no-browser」オプションを付けるのを知らなかったのでこの辺は読み飛ばしてOK.
初期化
# gcloud init
gcloud auth login --remote-bootstrap="https://accounts.google.com/o/oauth2/auth?response_type=....&token_usage=remote"
以前はブラウザにURLを張り付ければ認証できたけど、ブラウザのあるマシン上でコマンドを実行する必要があるので、Windows10にgsutilをインストールした。
Scoopでインストールしてみることにした。
参考: Windows10をクリーンインストールして初期設定。バックアップ作業
C:> scoop search gsutil
extrasバケットにあった。
C:> scoop bucket add extras
C:> scoop install gcloud
C:> gcloud init
こっちはURLのみ表示表示された。
ブラウザでURLを叩くと無事認証完了。
今度はサーバー上のgcloud auth loginを実行してみる。
C:> gcloud auth login --remote-bootstrap="https://accounts.google.com/o/oauth2/auth?response_type=....&token_usage=remote"
URLが表示されたのでブラウザで叩く。
Error 400: invalid_request
Missing required parameter: client_id
initの仕方が間違っていた。
(Windowsの方にgcloudをインストールする必要はなかった)
ブラウザなしのコンソールで実行する場合はオプションが必要。
console-onlyにオプション名が変わった。# gcloud init --no-browser
# gcloud init --console-only
表示されたURLをブラウザに張り付ければ認証完了。
試しにバケットの一覧表示
# gsutil ls
-bash: /usr/local/bin/gsutil: /usr/bin/python3.6: bad interpreter: No such file or directory
開発環境ではこのエラーは起きなかった。
dnf経由では/usr/bin/gsutilに配置される。
この /usr/local/bin/gsutilは何時ぞやの残骸だと思うので削除。
# rm /usr/local/bin/gsutil
シェルの再読み込みして確認。
# cd
# source .bash_profile
# which gsutil
/usr/bin/gsutil
バケットの一覧表示
# gsutil ls
無事Python 3.9でも動いた。