😵

aws-sam-cli インストール(失敗→完了)

2022/09/25に公開

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 を使っていたので、ツールを変更してみようと思い立ちました。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html

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