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: gsutil
Version: 5.10
Summary: A command line tool for interacting with cloud storage services.
Home-page: https://cloud.google.com/storage/docs/gsutil
Author: Google Inc.
Author-email: buganizer-system+187143@google.com
License: Apache 2.0
Location: /usr/lib/python3.9/site-packages
Requires: argcomplete, crcmod, fasteners, gcs-oauth2-boto-plugin, google-apitools, google-auth, google-reauth, httplib2, monotonic, pyOpenSSL, retry_decorator, six
Required-by:

# pip-autoremove gsutil

依存関係も削除された。
確認してアップデートがあればやっておく。
# pip list
# pip list -o
# pip install --upgrade certifi requests setuptools urllib3 psycopg


dnf経由でgcloud cliをインストール

公式サイトを参考に。

repoファイルを作成する。teeコマンドを初めて使った。

# tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM

[google-cloud-cli]
name=Google Cloud CLI
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el8-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM

確認
# less /etc/yum.repos.d/google-cloud-sdk.repo

gcloud cliをインストール
# dnf install google-cloud-cli

確認
# gcloud --version

Google Cloud SDK 389.0.0
alpha 2022.06.03
beta 2022.06.03
bq 2.0.74
bundled-python3-unix 3.9.12
core 2022.06.03
gsutil 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でも動いた。


【関連記事】