前提
- OSデフォルトのpythonを使う
- 極力最小限の手間で実現出来る
- pyenvとか使わない
- システム側には手を入れず、ユーザー側だけでどうにかする
- 端的に表現すると
sudo
なしで実現可能である
- 端的に表現すると
- Dockerは使わない
- EPELだけはOK牧場
-
pip
を使うため。これだけは許して
-
-
gsutil
でproxyが使えることが必須- これのせいで、こんな記事を書く羽目に
結論
sudo yum install python-pip
pip install --user --upgrade "setuptools<45"
pip install --user wheel
pip install --user gsutil
何にハマったのか
まず、python2でどうにかしようとした。gsutilはpython2を未だサポートしているから。しかし、単に pip install --user gsutil
するとうまくいかない。結論から言うとCentOS 7のpython2の setuptoolsが古すぎてconfigparser/zippパッケージの最新版をうまくインストール出来ていなかったからだった。これに気がつくのに時間がかかった。
python2で躓いたので、当然のことながらpython3でやってやろうじゃないか、ということに。今度は、すんなりいくように見えた。yumでpython3を入れて、pipでgsutilを入れるだけ。実際インストールはうまく出来て、gsutilも叩けるようになった。しかし今度はproxyの設定をするとTraceが出る(正確に言うと、環境変数でproxyを設定していたのだが、それが原因だと気がつくのに相当時間を要した)。たどり着いたのはこのIssue:
Openだった。絶望した。クラウド使っている人がproxyなんて小学生までだよねー、っていう感じ?はい、わかりますよ。
python2に戻り、ちゃんとエラーメッセージと向き合って、解決策にたどり着いた。このために4時間くらい消し飛んだ。
何故こんな縛りプレイをするのか
- 実際の運用環境では古いバージョンを使わざるをえないことが多々あるわけです
- 最新のものとかバンバン入れるとサーバー自体の運用・管理がしんどくなるわけです
- yumコマンドで入るものオンリー、かつrepoはbase/updates/EPEL以外は許容しないのです
- DockerはCentOS 6では厳しいのです
- 先にCentOS 7のサーバーでやっているが、同じことをCentOS 6のサーバーでもやらなきゃいけない