🙄

M2に新規にhomebrew環境を用意する

2022/09/17に公開

M2Macでパッケージをインストールしようとしたところ次のようなエラーが出ました。

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

基本的にはターミナルで表示されたエラーの内容を確認すれば解決するはずですが、以前設定した環境が残ってしまっていたのかうまくいかなかったため記事に残します。他の日本語で書かれた記事も同様ですが、あくまで記事に起こした時点で解決した方法です。

新しくhomebrewを用意する目的

macOS Homebrew running natively on M1/Apple Silicon/ARM has partial functionality. We recommend installing into /opt/homebrew and forbid installing into /usr/local (to avoid clashing with the macOS Intel install and allow their usage side-by-side). We currently recommend running Homebrew using Intel emulation with Rosetta 2.

M2ではARM版のHomebrewがパーシャル(部分的)に実行されます。その際、macOS Intelで/usr/local下にインストールされたhomebrewと衝突するのを避ける必要があり、/opt/homebrewにインストールすることが推奨されています。新しく環境を用意する目的としてはこのようなところです。

https://qiita.com/softbase/items/b00b407d0a7a9fdf2a35

用意する方法

基本的には、公式に書かれている通りに進めていきます。

mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

/opt下にhomebrewを作り、curlコマンドで上記githubを叩き、取得したデータをパイプラインで渡します。そしてtarコマンドで展開してhomebrewに入れるという形です。

実はtarコマンドをはじめて見ました。man tarでマニュアル調べたものの、xz --strip 1あたりはなにが行われているのかわから図。

--C
: アーカイブ元のファイルのディレクトリを指定する。この場合は、mkdirで作成したhomebrewが指定されています。

https://eng-entrance.com/linux-command-tar

or

git clone https://github.com/Homebrew/brew homebrew

もしくはgitから直接クローンしてきます。carlコマンドの方で行ってから後の操作がどうもうまくいかなかったので、こちらでやり直しました。

then

eval "$(homebrew/bin/brew shellenv)"
brew update --force --quiet
chmod -R go-w "$(brew --prefix)/share/zsh"

最後にこちらのevalコマンドで記載された文字列の実行結果、ここではディレクトリを辿っていった先のshellenvの実行結果を現在のシェルで実行します。

https://atmarkit.itmedia.co.jp/ait/articles/1712/22/news019.html

次いで、brew updateをかけます。

最後に、chmodで権限の変更を行います。オプションの-Rは再帰的、つまりディレクトリ構造の深いところまで含めて権限を変更していきます。変更する先のディレクトリは/zshが指定されているのでそのディレクトリに飲み限定されます。

https://webkaru.net/linux/chmod-command/

これで一通りの設定が終了です。

最後に

which brew

で、/opt/homebrewとなっていれば問題ありません。

ターミナルを再起動しても問題ないか

これを確認しておく必要があります。

私の場合は立ち上げ直してwhitch homebrewで調べたところ、PATH名が**/usr/local** 以下で表示されており、optディレクトリでなくなってしまっていました。

ターミナルは起動時に**.zshrc** を読み込むので、次のようにファイル内にPATH名を渡すように記述してみましたが、それもうまくいきませんでした。(直接open .zshrcで開いて記述も可能です)

https://zenn.dev/link/comments/b93554549fc9ea

最終的にコマンドを打てばターミナル起動中は切り替わるということが確認できている

eval "$(homebrew/bin/brew shellenv)"

をファイルに記述しておくことでターミナル起動時に反映させられるようにしました。

以上です。

Discussion