MacBook Air 13inch (M1, 2020) Homebrew 環境構築
この夏、メディアサーバだった Mac mini (Early 2009) をついに撤去したため、その代替として。
今となってはWSLもあり、わざわざMacを選ぶ意味はだいぶなくなりましたが……。 気がついたらUMPCじゃない普通のラップトップが家になかったので、とりあえず話の種に1枚買いました。
もうほとんどの人にとって、最下位モデルでじゅうぶんなのでは。SSDの容量は用途次第ですが、16GBのメモリを要する人が果たしてどれだけいるのか。
方針
- あくまで「端末」なのであまりにも凝ったことはしない
- できる限りHomebrewだけでまかなう
- できる限りarmのバイナリを使う
- 無理なものだけx86_64で
- 最終的にはx86_64を捨てるつもりで
インストール先は、
- arm64
/opt/homebrew
- x86_64
~/.local/homebrew
としてみます。x86がいらなくなったら .local
のほうはまるごと消すことにします。
Homebrew インストール
arm64
% cd /opt
% sudo mkdir homebrew
% sudo chown $USER homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
x86_64
(ここでは既に Rosetta 2 が導入されて、archコマンドがあるものとする)
ターミナル自体をx86で動かす。
% exec arch -arch x86_64 "$SHELL"
% cd ~
% mkdir -p .local/homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C .local/homebrew
~/.zshrc
PATH
の設定、補完関係、アーキテクチャの切り替えエイリアスなど。
果たしてHomebrewのキャッシュディレクトリは移しておくべきなのか。謎。
そういえばzshを初めて使う気がします。chpwd()
とか、初見ではわからんばい。
export LSCOLORS=gxfxxxxxcxxxxxxxxxgxgx
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'
alias ls='ls -FG'
chpwd() { ls }
setopt auto_cd
setopt magic_equal_subst
typeset -U path fpath cdpath
path=(
/opt/homebrew/bin(N-/)
~/.local/homebrew/bin(N-/)
$path
)
fpath=(
"$(brew --prefix)/share/zsh/site-functions"(N-/)
$fpath
)
cdpath=(
..
~
$cdpath
)
if (( $+commands[arch] )); then
alias brew_x86='arch -arch x86_64 "$HOME/.local/homebrew/bin/brew"'
alias switch2x86='exec arch -arch x86_64 "$SHELL" && source ~/.zshrc'
alias switch2arm='exec arch -arch arm64e "$SHELL" && source ~/.zshrc'
fi
if [[ "$(uname -m)" == x86_64 ]]; then
export HOMEBREW_CACHE="$HOME/.local/homebrew/cache"
else
export HOMEBREW_CACHE=
fi
autoload -U compinit && compinit
Starship
とりあえずこれを書いている時点では、armで失敗するのを確認。
% switch2arm
% brew install starship
代わりにx86でインストール。
% switch2x86
% brew_x86 install starship
適宜、設定と使用の準備。
% switch2arm
% echo 'eval "$(starship init zsh)"' >> ~/.zshrc
% mkdir ~/.config
% touch ~/.config/starship.toml
x86で作業したらarmに戻すのを忘れずに。 こんな調子で、なんとかなる気がします。