見出し画像

M1 Mac の Homebrew を 3.0 に移行する

はじめに

2020 年の 12 月から Apple M1 チップ搭載の Mac mini を使っています。Rosetta 2 のおかげで Intel CPU 向けに作られたアプリケーションもパフォーマンスが問題になることなく使えています。

いくつかのコマンドラインツールを使う関係で、パッケージマネージャーである Homebrew を使っているのですが、これを Apple M1 チップ搭載の Mac でどう使うのか?が Qiita や Zenn といった情報共有プラットフォーム上で話題になっていました。

そして 2021/02/05 になり、 Apple M1 チップに正式対応した Homebrew がリリースされました。

正式対応版ではありますが、それまでにインストールしたパッケージを自動的に Apple M1 向けのものにアップデートしてくれるわけではなく、Terminal.app や iTerm 2 などのターミナルアプリを Rosetta 2 で動かしている場合は引き続き Intel 向けのものが使われます。

Apple M1 向けの環境に移行する手順を考えてみました。

Homebrew をインストールする

Homebrew を Apple M1 チップが搭載された Mac かつ、Rosetta 2 を経由させないターミナルアプリ経由でインストールすると、

/opt/homebrew/bin/brew

にインストールされます。もしも Rosetta 2 で動かしているターミナルアプリで Intel プラットフォーム向けの環境を先にインストールしている場合は、単純に brew コマンドを使うと

/usr/local/bin/brew

側のものが使われてしまうので、フルパスを指定するなど、明示的に Apple M1 向けの brew コマンドを使う必要があります。私はフルパスを入力するのが面倒なので、一時的に brewm1 というエイリアスを作りました。 arch -arm64e を付けて、Rosetta 2 で動かしているターミナルアプリからでも ARM64 環境として実行させています。

# Homebrew command for Apple M1
alias brewm1='arch -arm64e /opt/homebrew/bin/brew'

※ Fish Shell の文法です

パッケージを移行する

まず、 Homebrew でインストールしているパッケージをリスト化し、それをテキストファイルとして出力します。

brew leaves > ~/my_brew_intel.txt

次に brewm1 を使ってこのリストのパッケージをインストールします。

xargs brewm1 install --cask < ~/my_casks_intel.txt

これで Intel プラットフォーム向けのパッケージのうち、 Apple M1 向けのパッケージが存在していればそちらがインストールされます。

また、 Homebrew Cask のものも移行できます (意味があるのかは置いといて) 。

brew list --cask -1 > ~/my_casks_intel.txt
xargs brew install --cask < ~/my_casks_intel.txt

Rosetta 2 を経由しないターミナルでは /opt/homebrew/bin を優先したい

私は Rosetta 2 経由で動かす iTerm 2 と、 Rosetta 2 を経由させない Terminal.app の 2 つを使っています。 Rosetta 2 を経由させた場合は /usr/local/bin を参照し、 Rosetta 2 を経由させない場合は /opt/homebrew/bin を優先したいと思いました。

set current_architecture (uname -m)
if test "$current_architecture" = "arm64"
   set PATH /opt/homebrew/bin $PATH
end

そこで、 uname -m で取得できるアーキテクチャが arm64 の場合は PATH の頭に /opt/homebrew/bin を挿入することで解決しました。 Apple M1 側に完全移行すればこのような対応は不要だと思いますが、過渡期として、または明示的に Intel プラットフォームのものと使い分けたい場合には有効ではないでしょうか?

終わりに

自分のメモ書き的な内容ですが、同じようなことをやりたいと思った人の助けになれば幸いです。本格的な開発、クリエイティブ向けの Apple Silicon 搭載 Mac シリーズの誕生も楽しみですね。

この記事が気に入ったらサポートをしてみませんか?