タイトルの通りですが、M1 Macでterraformインストール中に見たことないエラーに出くわしたのでここにしたためます。
前提
$ sw_vers
ProductName: macOS
ProductVersion: 11.5.2
BuildVersion: 20G95
$ uname -mrsv
Darwin 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101 arm64
tfenvインストール
何はなくともanyenv
ということで、徐に入れます。
$ brew install anyenv
私の環境ではすでにanyenvでいくつかバージョン管理ツール入れていたので、anyenv経由でtfenvインストールします。
$ anyenv versions
nodenv:
system
14.17.6
* 16.8.0 (set by /Users/shionel31/.anyenv/envs/nodenv/version)
rbenv:
system
* 3.0.2 (set by /Users/shionel31/.anyenv/envs/rbenv/version)
*
$ anyenv install tfenv
/var/folders/74/kf7jxg0n72lbzfvhr_19wkdw0000gn/T/tfenv.20211008183006.20347 /usr/local/bin
Cloning https://github.com/tfutils/tfenv.git master to tfenv...
Cloning into 'tfenv'...
remote: Enumerating objects: 1559, done.
remote: Counting objects: 100% (374/374), done.
remote: Compressing objects: 100% (147/147), done.
remote: Total 1559 (delta 233), reused 334 (delta 213), pack-reused 1185
Receiving objects: 100% (1559/1559), 336.28 KiB | 768.00 KiB/s, done.
Resolving deltas: 100% (996/996), done.
/usr/local/bin
Install tfenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ tfenv -v
tfenv 2.2.2
terraformインストール
本題であるterraform
をインストールします。
$ terraform -v
No versions of terraform installed. Please install one with: tfenv install
$ tfenv list-remote
1.1.0-alpha20211006
1.1.0-alpha20210922
1.1.0-alpha20210908
1.1.0-alpha20210811
1.1.0-alpha20210728
1.1.0-alpha20210714
1.1.0-alpha20210630
1.1.0-alpha20210616
1.0.8
1.0.7
1.0.6
...
$ tfenv install 1.0.8
Installing Terraform v1.0.8
Downloading release tarball from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_darwin_amd64.zip
##################################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
/opt/homebrew/Cellar/tfenv/2.2.2/libexec/tfenv-install: line 251: 11963 Killed: 9 "${shasum_bin}" -a 256 -s -c <(grep -F "${tarball_name}" "${shasums_name}")
SHA256 hash does not match!
ここでエラーが発生。No keybase install found
。
ちょっと見過ごしちゃいそうですが、keybaseというアプリがあるそうです。
あと、M1 Macでも_amd64
のtarballを落としちゃってるところはやや気になります。
参考
https://github.com/tfutils/tfenv/issues/275
Keybaseインストール
https://keybase.io/docs/the_app/install_macos
ここから愚直にdmgを落としてインストールしました。
適当にサインアップしました。
terraformインストール再挑戦!
$ tfenv install latest
Installing Terraform v1.0.8
Downloading release tarball from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_darwin_amd64.zip
##################################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS
Unable to verify OpenPGP signature unless logged into keybase and following hashicorp
/opt/homebrew/Cellar/tfenv/2.2.2/libexec/tfenv-install: line 251: 12811 Killed: 9 "${shasum_bin}" -a 256 -s -c <(grep -F "${tarball_name}" "${shasums_name}")
SHA256 hash does not match!
エラー発生、、しかしエラー文言は変わりました。
unless logged into keybase and following hashicorp
と書いてあるので、terraform提供元のhashicorpをfollowしてくれと。
実はGUI版Keybaseアプリをインストールした状態で、ターミナルでもkeybase
コマンドが使えるようになってるっぽいので、followしてみます。
$ keybase id hashicorp
▶ INFO Identifying hashicorp
✔ public key fingerprint: C874 011F 0AB4 0511 0D02 1055 3436 5D94 72D7 468F
✔ admin of DNS zone hashicorp.com: found TXT entry keybase-site-verification=a-iv8bbkw3LgvmnT-p1jJ7Com9O-5GrOyFClq2-0iRQ
$ keybase follow hashicorp
▶ INFO Identifying hashicorp
✔ public key fingerprint: C874 011F 0AB4 0511 0D02 1055 3436 5D94 72D7 468F
✔ admin of DNS zone hashicorp.com: found TXT entry keybase-site-verification=a-iv8bbkw3LgvmnT-p1jJ7Com9O-5GrOyFClq2-0iRQ [cached 2021-10-08 18:05:59 JST]
Is this the hashicorp you wanted? [Y/n] Y
Publicly follow? [Y/n] Y
これでhashicorpをfollowできたようです。
terraformインストール再々挑戦!
満を持してterraformのインストールに再びTry!
$ tfenv install latest
Installing Terraform v1.0.8
Downloading release tarball from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_darwin_amd64.zip
##################################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS
Downloading SHA hash signature file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS.72D7468F.sig
▶ INFO Identifying hashicorp
✔ <followed> public key fingerprint: C874 011F 0AB4 0511 0D02 1055 3436 5D94 72D7 468F
You last followed hashicorp on 2021-10-08 18:06:12 JST
✔ <followed> admin of DNS zone hashicorp.com: found TXT entry keybase-site-verification=a-iv8bbkw3LgvmnT-p1jJ7Com9O-5GrOyFClq2-0iRQ [cached 2021-10-08 18:05:59 JST]
Signature verified. Signed by hashicorp 1 week ago (2021-09-30 02:33:32 +0900 JST).
PGP Fingerprint: c874011f0ab405110d02105534365d9472d7468f.
/opt/homebrew/Cellar/tfenv/2.2.2/libexec/tfenv-install: line 251: 13208 Killed: 9 "${shasum_bin}" -a 256 -s -c <(grep -F "${tarball_name}" "${shasums_name}")
SHA256 hash does not match!
...
もう嫌になってきましたが、terraform
使えないと困るのでもう少し粘ります。
怪しい箇所:
"${shasum_bin}" -a 256 -s -c <(grep -F "${tarball_name}" "${shasums_name}")
shasum?これが問題っぽいです。Killed: 9
はCommand not found絡み。
参考(再掲)
https://github.com/tfutils/tfenv/issues/275
こちらのスレッドにもある通り、shasumコマンドをリネームしている部分がありました。
ただ、リネームしちゃうとshasumに依存している他の部分に波及してしまうんではないかと思い、手を打ってみます。
$ which shasum
/opt/homebrew/bin/shasum
$ shasum
zsh: killed shasum
$ ls -la $(which shasum)
lrwxr-xr-x 32 shionel31 admin 2021-07-30 11:10 /opt/homebrew/bin/shasum -> ../Cellar/perl/5.34.0/bin/shasum
ふむふむ。実行バイナリはあるがなぜかコマンドが動かない。
動くshasum
コマンドがほしい。
$ brew list | grep sha
wireshark
$ brew search shasum
==> Formulae
sha3sum
3?となりましたが、ひとまず動けばいいので入れてみます。
$ brew install sha3sum
$ sha3sum ${ファイル名}
faffad5de05ce9d02bb51c5ff6a1c08c490d3730 ${ファイル名}
↑こんな感じでハッシュ値を出す用途で使います。
$ ls -la $(which shasum)
lrwxr-xr-x 32 shionel31 admin 2021-07-30 11:10 /opt/homebrew/bin/shasum -> ../Cellar/perl/5.34.0/bin/shasum
$ ls -la $(which sha3sum)
lrwxr-xr-x 35 shionel31 admin 2021-10-08 18:17 /opt/homebrew/bin/sha3sum -> ../Cellar/sha3sum/1.2.1/bin/sha3sum
ここでsha3sumコマンドにエイリアス名shasumを設定します。
$ export "alias shasum=sha3sum" > ~/.zshrc
$ tail -1 ~/.zshrc
alias shasum=sha3sum
$ source $_
ちなみにエイリアスを張らずにシンボリックリンクを張った場合でも動きましたが、sha3sum
自体が参照ループのエラーになってしまうので正攻法では無いようです。
$ cd /opt/homebrew/bin
$ ln -snf /opt/homebrew/bin/shasum ../Cellar/sha3sum/1.2.1/bin/sha3sum
$ shasum -v
6.02
$ sha3sum
zsh: too many levels of symbolic links: sha3sum
terraformインストール再々々挑戦!!
$ tfenv install latest
Installing Terraform v1.0.8
Downloading release tarball from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_darwin_amd64.zip
##################################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS
Downloading SHA hash signature file from https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_SHA256SUMS.72D7468F.sig
▶ INFO Identifying hashicorp
✔ <followed> public key fingerprint: C874 011F 0AB4 0511 0D02 1055 3436 5D94 72D7 468F
You last followed hashicorp on 2021-10-08 18:06:12 JST
✔ <followed> admin of DNS zone hashicorp.com: found TXT entry keybase-site-verification=a-iv8bbkw3LgvmnT-p1jJ7Com9O-5GrOyFClq2-0iRQ [cached 2021-10-08 18:05:59 JST]
Signature verified. Signed by hashicorp 1 week ago (2021-09-30 02:33:32 +0900 JST).
PGP Fingerprint: c874011f0ab405110d02105534365d9472d7468f.
Archive: tfenv_download.k4eWK1/terraform_1.0.8_darwin_amd64.zip
inflating: /opt/homebrew/Cellar/tfenv/2.2.2/versions/1.0.8/terraform
Installation of terraform v1.0.8 successful. To make this your default version, run 'tfenv use 1.0.8'
入った
$ tfenv use 1.0.8
$ tfenv version-name
1.0.8
$ tfenv list
* 1.0.8 (set by /opt/homebrew/Cellar/tfenv/2.2.2/version)
$ terraform -v
Terraform v1.0.8
on darwin_amd64
特にRosettaでターミナル開いているわけではないのですが、がっつり「on darwin_amd64」!とでています。
一旦、terraform
コマンド自体が動くようになったのでこれで御の字とします。