awscli を upgrade する際、 python を消して python@3.8 を使うようにしたログです。
環境(ブログ作成時)
- OS: macOS Mojave 10.14.6
- Homebrew: 2.2.13-74-gecea0e5
- homebrew-core (git revision eb6d; last commit 2020-04-19)
- python: Python3.7.7
- python@3.8: Python 3.8.2
- awscli: aws-cli/2.0.8 Python/3.8.2 Darwin/18.7.0 botocore/2.0.0dev12
keg-only formula と Homebrew の install 事情
Homebrew は元々、 /usr/local/bin へ直接 formula を install しません。
/usr/local/Cellar などの PATH に install して、そこから symlink を貼ります。
その中で key-only formula は「install しても /usr/local/bin に link しない」 formula です。
今回は python@3.8 が keg-only に指定されています。理由として executable の衝突回避が挙げられます。
- 前提として、現時点で Homebrew が提供している python は 3.7 系列
- python が存在する環境に python@3.8 も installすると /usr/local/bin/python3 が重複する
- /usr/local/bin/python3 を 3.7 系列に譲るために、 3.8 は keg-only として link しない
という感じかと思われます。
keg-only formula を link する前の確認
link の前に、念の為 python が使われていないか、以下のコマンドでチェックします。
- $ brew uses --installed python
何も出力されない場合は install 済みの formulas 全てにおいて python を使っていません。
出力がある場合、その formula は python を使っています。 3.8 の link は止めた方が良いでしょう。
なお、 keg-only formula を link する場合は --force が必要です。
ちなみに homebrew-bundle では、 link: true を付けると link してくれます。
出力がある場合、その formula は python を使っています。 3.8 の link は止めた方が良いでしょう。
python@3.8 を /usr/local/bin に link する
上記のチェック時、私の環境では出力が無かった為 python@3.8 を link する事にしました。なお、 keg-only formula を link する場合は --force が必要です。
- $ brew upgrade awscli
- 依存関係で python@3.8 が install される
- $ brew link --force python@3.8
- $ which python3 aws
- /usr/local/bin/python3
- /usr/local/bin/aws
- $ python3 -V
- Python 3.8.2
- $ aws --version
- aws-cli/2.0.8 Python/3.8.2 Darwin/18.7.0 botocore/2.0.0dev12
ちなみに homebrew-bundle では、 link: true を付けると link してくれます。
0 件のコメント:
コメントを投稿