メモ2ブログ

メモtoウェブログ。旧ブログはこちら。 http://sakebook.blogspot.jp/

HomebrewをM1Macに移行する

最近メインPCをM1 Macに移行しました。移行アシスタントで移行しました。

support.apple.com

その関係で、M1 Macで正しく動かせないものなどがあります。

Homebrewもその一つでした。

そのまま実行すると次のようなエラーになります。

Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
Please create a new installation in /opt/homebrew using one of the
"Alternative Installs" from:
  https://docs.brew.sh/Installation
You can migrate your previously installed formula list with:
  brew bundle dump

したがって次のコマンドを実行します。

$ brew bundle dump

このコマンドは現在Homebrewで管理してるパッケージがまとまったBrewfileが生成されます。

その後、Homebrewをインストールスクリプトで入れ直します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

入れ直したら、pathを設定します。これはインストールスクリプトのアウトプットにあるのでそれをそのまま使ってください。次のような感じです。

- Run these two commands in your terminal to add Homebrew to your PATH:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/YOUR_NAME/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"

その後、Brewfileを指定してbundle installしてください

$ brew bundle install --file YOUR_BREWFILE_PATH

これで現在はHomebrewが2つ入っていることになります。

古いHomebrewを削除します。

古い方は /usr/local

新しい方は /opt/homebrew

に設置されてますが、適宜自身の環境で読み替えてください。

アンインストールスクリプトがあるので、それを実行します。

注意する点は、そのまま実行すると先ほどインストールしたHomebrewがアンインストールされるので、path引数に古い方のHomebrewのpathを指定します。

また、curlで読み込みつつ引数を渡すために -- を間に引数として渡します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" -- --path=/usr/local

最後に

$ brew doctor

を実行して、うまく結びついていないものなどがあれば適宜出力に基づいて修正してください。

以上です。

参考

The Missing Package Manager for macOS (or Linux) — Homebrew

homebrew - Migrate home-brew back from M1 to Intel - Ask Different

curlでbashスクリプトを実行して引数も与える - ls [internet]