LoginSignup
0
2

More than 1 year has passed since last update.

Intel Mac で HomeBrew のインストール先を変更したらエラーになった件

Last updated at Posted at 2021-11-23

経緯

しばらく Mac を使っていなかったので、久しぶりに引っ張り出して環境を再構築してみました。ついでなので、Big Sur にしたのですが、今まで使っていた fink が未だに Big Sur に対応していなかったので、HomeBrew を試してみようかと思いました。

fink の時は /opt/sw 配下にインストールされていたので、試しに使って不要になったら/opt/swごと消せばよかったのですが、brew のデフォルトのインストール先は /usr/local です。/usr/local は OS のコマンドがインストールされている場所なので、汚したくありません。そこでこちらの記事を参考にインストール先を変更してみることにしました。

何が起きた?

ところが、実際にインストールしてみると下記のエラーが発生してしまい、正常に動作しませんでした。

Error: Cannot install on Intel processor in ARM default prefix (/opt/homebrew)!

どうやら、Apple Silicon が発売されたために、/opt/homebrewが Apple Silicon 用のデフォルトインストール先になってしまったようです。このディレクトリは ARM アーキテクチャ用に予約されてしまい、Intel アーキテクチャの Mac では使用できなくなってしまったようです。

この問題はこちらの issue でも報告されていました。

別のディレクトリにインストールしてみる

インストール先のディレクトリを変えるだけなので、特に難しいところはありませんが、備忘録代わりにに作業メモを残しておきます。

まずは、インストール先のディレクトリを下記のように作成します。

mkdir -p /opt/homebrew/x86_64
cd /opt/homebrew

あとは、インストールガイドに書いてあるコマンドを、ディレクトリを読み替えて実行していくだけです。インストール先を変えたので、インストールコマンドは下記のように変わります。

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

インストールできたら、後処理コマンドを順に実行します。

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

これで正常にコマンドをインストールできる環境が整ったはずです。

最後に、毎回パスを通すのは面倒なので .bash_profile に下記を追記しておくと便利です。(書き込み先ファイルは使用しているシェルに合わせて読み替えてください。)

echo 'eval "$(/opt/homebrew/x86_64/bin/brew shellenv)"' >> ~/.bash_profile

コマンドをビルドできない場合

参考元の記事にも書いてありますが、コマンドインストール時にソースからビルドが必要になることがあります。コマンドラインツールをインストールしていない場合は、先にインストールしておいた方が無難だと思います。(XCodeをインストールしている人はもしかするといらないかも)

sudo xcode-select --install

ビルド時間について

やはり、ソースからビルドが走るので時間がかかってしまいますね。マシンスペックにも依ると思いますが、依存関係が多いと一晩くらいかかることもあります。

fink の時も apt を使用しないでインストールする際はビルドが走るので、同じくらい時間がかかっていました。本格的に brew に乗り換える際は、/usr/local にインストールし直そうかと思います。

逆に、Apple Silicon に買い替えてしまえば、/usr/local を汚してしまう問題はパフォーマンスを犠牲にせずに解決しそうなので、その点は嬉しいですね。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2