aws-sam-cli インストール(失敗→完了)
SAM 環境の構築
aws の SAM(Serverless Application Model) を macOS でインストールしようとして、思ったよりハマりましたので、備忘録として経緯を書きます。
インストール履歴
環境
- macOS 12.5
- Python 3.8.11
あたりを気にしておけばよいか、と思い、とりあえずスタート。
最初に
pip を使ってインストールを開始しましたが、エラーになります。
$ pip install aws-sam-cli
:
Building wheels for collected packages: regex, watchdog, backports.zoneinfo
Building wheel for regex (setup.py) ... done
Created wheel for regex: filename=regex-2021.9.30-cp38-cp38-macosx_11_0_arm64.whl size=282311 sha256=70ffef1f1a4275a39afa0f5767fdc9f5dc60587edaa1ed1ba104620fcf58ae29
Stored in directory: /Users/yasu/Library/Caches/pip/wheels/ef/63/c3/e000f77d4e6cadd47f91a6501828038c95cea6cf578eb383c1
Building wheel for watchdog (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Users/yasu/.pyenv/versions/3.8.11/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/t8/frsph_1j4zbgl1mqh0k791wc0000gn/T/pip-install-wpno4c_y/watchdog_0cc7ded9e0f14935ac80bf4cad568cc8/setup.py'"'"'; __file__='"'"'/private/var/folders/t8/frsph_1j4zbgl1mqh0k791wc0000gn/T/pip-install-wpno4c_y/watchdog_0cc7ded9e0f14935ac80bf4cad568cc8/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/t8/frsph_1j4zbgl1mqh0k791wc0000gn/T/pip-wheel-9pqurh4h
cwd: /private/var/folders/t8/frsph_1j4zbgl1mqh0k791wc0000gn/T/pip-install-wpno4c_y/watchdog_0cc7ded9e0f14935ac80bf4cad568cc8/
Complete output (109 lines):
:
OS も割と新しいですし Python もそれほど古くないため、他の原因を求めてエラーメッセージを元に G で検索をはじめました。
解決に向けて
まずは、"ERROR: Command errored out with exit status 1"
を元に検索し、他の人達の解決策を試すも解決しませんでした。
$ CFLAGS=-stdlib=libc++ pip install reppy
や
$ pip install --upgrade setuptools
などなど、見つかったものは試しましたが、だめでした。
ここで原点に戻って aws のサイトの SAM インストールのサイトをチェックし、Homebrew を使っていたので、ツールを変更してみようと思い立ちました。
Homebrew を用いたインストール
Homebrew はインストール済みなので、次を実行します。
$ brew tap aws/tap
$ brew install aws-sam-cli
ですが、結果はエラーです。
$ brew install aws-sam-cli
==> Downloading https://ghcr.io/v2/homebrew/core/gdbm/manifests/1.23
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gdbm/blobs/sha256:62a2c1994737a2677f318a97ac64a32690f9f958086310a49f37e3fcfd5b6731
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:62a2c1994737a2677f318a97ac64a32690f9f958086310a49f37e3fcfd5b6731
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2022-07-19_1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:9e0df163364a5ae07f3ee2cf39083cd74bcb38eeb5250b706e1c02f878d8d632
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:9e0df163364a5ae07f3ee2cf39083cd74bcb38eeb5250b706e1c02f878d8d632
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/manifests/1.1.1q
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/blobs/sha256:4e7b6cb2252c554a8e25ecae960f2fcd9a7fa742aa3fc99e6b533bb4e5d32483
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:4e7b6cb2252c554a8e25ecae960f2fcd9a7fa742aa3fc99e6b533bb4e5d32483
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/readline/manifests/8.1.2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/readline/blobs/sha256:9d9d9512c80c6ae7c8281da84533222d90cb5e06accdfa98e0bff37672793cec
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:9d9d9512c80c6ae7c8281da84533222d90cb5e06accdfa98e0bff37672793cec
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/sqlite/manifests/3.39.3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/sqlite/blobs/sha256:6bdbd6a23d81f9b99a6a24a598e800279f6557b925165449f599a522ad52fbba
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:6bdbd6a23d81f9b99a6a24a598e800279f6557b925165449f599a522ad52fbba
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/tcl-tk/manifests/8.6.12_1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/tcl-tk/blobs/sha256:8accfee37564f1f390c27ba44a1e501ae3a2ba23fb8ecf126da43c105aa3411c
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:8accfee37564f1f390c27ba44a1e501ae3a2ba23fb8ecf126da43c105aa3411c
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/xz/manifests/5.2.6
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/xz/blobs/sha256:345b942fb105c850d6243d91502fa285408cfcc7d78d9aaf27322acea608e901
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:345b942fb105c850d6243d91502fa285408cfcc7d78d9aaf27322acea608e901
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.8/manifests/3.8.14
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.8/blobs/sha256:2e15a9bf393dbddf7e5abf264c9b43ac6cdc3fc379b6601bd3110ba3d3e743cd
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:2e15a9bf393dbddf7e5abf264c9b43ac6cdc3fc379b6601bd3110ba3d3e743cd
######################################################################## 100.0%
==> Downloading https://api.github.com/repos/aws/aws-sam-cli/tarball/v1.57.0
==> Downloading from https://codeload.github.com/aws/aws-sam-cli/legacy.tar.gz/refs/tags/v1.57.0
######################################################################## 100.0%
==> Installing aws-sam-cli from aws/tap
Error: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences or run:
softwareupdate --all --install --force
If that doesn't show you any updates, run:
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Alternatively, manually download them from:
https://developer.apple.com/download/all/.
You should download the Command Line Tools for Xcode 13.4.
メッセージが変わって対策も書かれているので、わかりやすいです。
まずは softwareupdate --all --install --force
を実行したところ、OS のアップデートが始まりました、12.5 → 12.6 です。むむ、こんなので変わるか??? と思いつつ再度 brew install aws-sam-cli
を実行するも結果は一緒なので、次の2行を実行します。
$ sudo rm -rf /Library/Developer/CommandLineTools
$ sudo xcode-select --install
これらの後、再度 brew install aws-sam-cli
を実行するとちゃんとインストールができました。
振り返り
あとになって考えると、、、訳合って x-code のアップデートをしばらく行っていませんでした。こいつのせいかもしれません。
Discussion