ベストプラクティス多すぎ?
参考にさせていただきました。
- Apple Silicon (ARM, M1) のmacOSにaarch64とx86_64のhomebrewを共存させる (Qiita)
- M1チップのMacBookにおけるHomebrewの私的ベストプラクティス (Zenn)
- Apple SiliconにおけるHomebrewのベストプラクティス (Qiita)
- みんなの M1 Mac における Homebrew のベストプラクティス は間違っている (Zenn)
はじめに
- 基本的にはフロントエンド開発環境( Node.js や Yarn、Git、GnuPG など)の構築を目指します
- ターミナル.app の
Rosetta を使用して開く
はオフ
にして、arm64 環境をデフォルトとして利用します - zsh シェルを使います
エイリアスの作成
x64
もしくは a64
でアーキテクチャを行ったり来たりできるように ~/.zshrc
でエイリアスを設定します。
.zshrc
if(($+commands[arch] ));then
alias x64='exec arch -arch x86_64 "$SHELL"'alias a64='exec arch -arch arm64e "$SHELL"'fi
Homebrew arm64 のインストール
arm64
環境でターミナルが開かれていることを確認し、Homebrew のインストーラを起動します。
zsh
% arch
arm64
% /bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストーラが M1 Mac に対応したため、自動的に /opt/homebrew/
以下にインストールされます。
パッケージのインストール(一例)
% which brew
/opt/homebrew/bin/brew
% brew install-v node yarn git gnupg
(2021/01/02) 現在、上記4つのパッケージ(とそれが依存するパッケージ)はすべてバイナリでインストールすることが可能です。
ただし、NodeJSは node@15
のみ対応済みです。node@14
や node@12
はビルドできません。
Homebrew x86_64 のインストール
ターミナルを x64
へ切り替えます。
zsh
% a64
% uname-m
x86_64
インストーラは arm64
版と同じです。従前通り /usr/local/
以下へインストールされます。
zsh
% /bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
せっかくなので、こちらでは LTS 版の node@14 をインストールします。
zsh
% which brew
/usr/local/bin/brew
% brew install-v node@14 yarn
環境ごとに PATH などのシェル変数を切り換える
arm64 では /opt/homebrew/bin
を優先し、x64 では node@14 のために /usr/local/opt/node@14
を優先し、LDFLAGS
と CPPFLAGS
の2つのシェル変数も設定します。
.zshrc
if[[$(uname-m)="x86_64"]];then
typeset-U path PATH
path=($HOME/bin(N-/)
/usr/local/opt/node\@14/bin(N-/)
/usr/local/bin(N-/)
/usr/local/sbin(N-/)$path)export LDFLAGS="-L/usr/local/opt/node@14/lib"export CPPFLAGS="-I/usr/local/opt/node@14/include"else
typeset-U path PATH
path=($HOME/bin(N-/)
/opt/homebrew/bin(N-/)
/opt/homebrew/sbin(N-/)
/usr/local/bin(N-/)
/usr/local/sbin(N-/)$path)export LDFLAGS=""export CPPFLAGS=""fi
いまのところ、うまく行っている感じです。