🔖

M1 MacにApple Silicon用のHomebrewをインストールする方法

2024/06/19に公開
2

はじめに

Rubyのバージョン管理ツールであるrbenvを使用している際に、MacBook Pro(M1チップ搭載)で、意図せずにIntel Mac用のHomebrewをインストールして使用していることに気付きました。
https://zenn.dev/nenenemo/articles/6788cc0d908eb5

この記事では、Homebrew(Intel Mac用)を削除する方法とHomebrew(Apple Silicon用)をインストールする方法について記述しています。
https://zenn.dev/nkzn/articles/brew3-should-install-with-m1-terminal

Homebrewとは

macOSなどのパッケージ管理システムです。
Homebrewを使用すると、ターミナルからコマンド一つで様々なソフトウェアやツールをインストールやアップデートすることができます。
https://brew.sh/ja/

現在の情報を把握する

インストールする前に、まずシステムの情報を確認することで、正しいアーキテクチャに対応したパッケージやツールを設定することができます。

Homebrewでインストールしたパッケージのインストール先ディレクトリを確認

Homebrewを使ってインストールされたパッケージのインストール先のディレクトリを確認してください。

brew --prefix
  • /usr/localが表示されれば、Intel Mac用を使用してインストールしていることになります。
  • /opt/homebrewが表示されれば、Apple Silicon用を使用してインストールしていることになります。

どのディレクトリにあるbrewコマンドが実行されているか確認

現在、どのディレクトリにあるbrewコマンドが実行されているか確認してください。

which brew
  • /usr/local/bin/brewが表示されれば、Intel Mac用を使用していることになります。
  • /opt/homebrew/bin/brewが表示されれば、Apple Silicon用を使用していることになります。

現在のシステムのアーキテクチャを取得する

下記のどちらかのコマンドを実行して、現在のシステムのアーキテクチャを取得してください。

uname -m
 
arch
  • x86_64が表示されれば、Intelプロセッサが搭載されていることになります。
  • arm64が表示されれば、M1チップ(Apple Silicon用)が搭載されていることになります。

Rosettaの使用を確認

ターミナルの情報を見るを選択、

Rosettaを使用して開くのチェック状況を確認してください。

Apple SiliconのMacでは、Intelベースのアプリケーションを実行するためにRosettaを使用します。

よって、ターミナルアプリケーションがRosettaを使用して開くにチェックが入っている場合、そのターミナルを通じて起動されるすべてのプロセスやアプリケーションはIntel版として実行されます。

そして、ターミナルを通じた操作にはHomebrewのインストールや操作も含まれるため、結果的にIntel用のパス(/usr/local)にインストールされる可能性が生じてしまいます。

既存のHomebrewの削除する前に

既存のHomebrewの削除する前に、すでにインストールされているパッケージのバックアップをとっていた方が良いです。
https://zenn.dev/usagiga/articles/migrate-using-brew-bundle

Homebrew Bundleの機能を使用して、現在のシステムにインストールされているすべてのパッケージ(グローバルが、~/.Brewfileに書き出されます。

brew bundle dump --global

後でApple Silicon用のHomebrewのインストールを行なった後に下記を実行することで、同じパッケージを再度インストールすることができます。

brew bundle --global

既存のHomebrew(Intel Mac用)削除する

不安な方はApple Silicon用のHomebrewのインストールしてから削除した方が良いかなと思います。切り替えて使用されている方もおられるようです。

Homebrewが2つある状態になるので、brewを使用してインストールする際には注意してください。

参考にさせていただきました。
https://qiita.com/kujirahand/items/dd4fc17617f98283e869

export PATH=/usr/local/bin:${PATH}
brew uninstall $(brew list)

削除できたか確認してください。何も表示されなければ、削除できています。

brew list

または下記で既存のHomebrew(Intel Mac用)削除することができます。今回の場合は、Rosettaを使用して開くにチェックが入ったままの状態で行ってください。

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

exportコマンド

環境変数を設定し、その後のプロセスにその環境変数を渡すためのコマンドです。
設定した環境変数は、そのシェルセッション内でのみ有効であり、セッションを閉じると消えます。

永続化するには、設定をシェルの設定ファイルに記述する必要があります。

Apple Silicon用のHomebrewのインストール

Rosettaを使用して開くにチェックがないことを確認してから行ってください。

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

パスワードを入力後に下記が表示されます。これはインストールが進行する前にインストールされる内容を確認しています。インストールを続行する場合はEnterキーを押してください。他のキーを押すとインストールが中止されます。

==> Checking for sudo access (which may request your password)...
Password:
==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew

Press RETURN/ENTER to continue or any other key to abort:

現在のシェルを確認する

シェル(Shell)とは、OSにおいてユーザーとシステムとの間で対話を行うためのインタフェースです。
この後PATH設定を行うのですが、設定前に現在のシェルを確認してください。

echo $SHELL
  • /bin/zshが表示されれば、zshを使用していることになります。
  • /bin/bashが表示されれば、bashを使用しています。

PATHの設定

~/.zshrcファイルを開いて編集してください。

nano ~/.zshrc

下記を追記したら、Ctrl + Xを押して保存の確認を行い、

export PATH="/opt/homebrew/bin:$PATH"

Yを入力選択、

Enterキーを押してファイルを保存して終了してください。

変更を反映させるために、シェルの再読み込みを行ってください。

source ~/.zshrc

パスが通っているか、Apple Silicon用のHomebrewのインストールができているかパッケージを表示して確認してください。

brew list

ちなみにmysqlがインストールされているか確認したい場合は以下のコマンドです。

brew list| grep mysql

==> Formulaeと表示され、インストールされたFormulaeの一覧が表示されない場合、現時点でFormulaeはインストールされていないことを意味しています。

現在、どのディレクトリにあるbrewコマンドが実行されているか確認してください。

which brew

/opt/homebrew/bin/brewが表示されれば、Apple Silicon用を使用しているので問題ないです。

終わりに

何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉

Discussion

ぴんなるぴんなる

/opt/homebrewが表示されれば、Intel Mac用を使用してインストールいることになります。
/usr/localが表示されれば、Apple Silicon用を使用してインストールいることになります。

これ逆だと思いましたが、あってますか?

nn

コメントいただきありがとうございます!
ご指摘いただいた通り逆に記載してしまっていたので、修正しました。