🍎
Homebrew + asdf with Apple M1
M1 Macでhomebrewとasdfを使った環境構築方法をメモ。
Homebrewの設定
インストール方法 に従ってインストールする。
今回は /opt/homebrew
にインストールされていると想定する。
切り替え設定
別途x86_64版を導入している場合は ~/.bash_profile
もしくは ~/.zprofile
に切り替えの設定を書いておく。
if [ "$(uname -m)" = "x86_64" ]; then
eval $(/homebrew/bin/brew shellenv)
else
eval $(/opt/homebrew/bin/brew shellenv)
fi
export HOMEBREW_CACHE="$(brew --prefix)/cache"
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
coreuitlsなどのPATHを通している場合は $(brew --prefix [command])
もしくは $HOMEBREW_PREFIX
に置き換える。
export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
# 以下と同じ
#export PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
asdfの設定
インストール方法 に従ってインストールする。
対応が必要ないもの
versionは確認済みのもの。
- digdag: 0.9.41
- golang: 1.17.4
- java: liberica-8u312+7, liberica-11.0.13+8, openjdk-17.0.1
- kotlin: 1.6.10
- nodejs: 14.17.0, 16.13.1
- python: 3.9.6
- ruby: 3.0.3
-
hashicorp
- terraform: 1.0.6
-
py-app
- ansible-base: 2.10.16
- k8s
- unofficial
- openapi-generator: 5.1.0
対応が必要なもの
- python: 3.9.7~, 3.10.0
- ビルドエラー
- ruby: 2.6.5
- 環境変数が必要:
RUBY_CONFIGURE_OPTS='--build aarch64-apple-darwin20.6' RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
- 環境変数が必要:
-
postgres: 11.14, 12.1
- 環境変数が必要:
POSTGRES_CONFIGURE_OPTIONS='--build aarch64-apple-darwin20.6' LDFLAGS="-L$(brew --prefix openssl)/lib" CPPFLAGS="-I$(brew --prefix openssl)/include"
- 環境変数が必要:
おまけ
ターミナル
アプリのプロパティの Rosettaを使用して開く
を有効にするとx86_64互換で実行される。
(Finderから アプリケーション/ユーティリティ/ターミナル.app
を右クリックして 情報を見る を選択すると設定が開く)
# Rosettaを費用して開く off
$ uname -m
arm64
# Rosettaを費用して開く on
$ uname -m
x86_64
archコマンドで一時的に使い分けることも可能:
# arm64
$ arch -x86_64 bash
$ uname -m
x86_64
# x86_64
$ arch -arm64e bash
$ uname -m
arm64
Terraform
対応していないものは自前でビルドして ~/.terraform.d/plugins
以下に配置する。
ただしhashが変わってしまうので .terraform.lock.hcl
の取り扱いに注意が必要。
hashicorp/terraform-provider-template での例:
$ git checkout v2.2.0
$ go mod vendor
$ go build .
$ install -D terraform-provider-template ~/.terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64/terraform-provider-template
Discussion