前書き
業務で使用している MacbookAir で node, python のインストールができなくなっていた。原因としては intel CPU の MackbookAir から Apple Silicon の MacbookAir に移行を行ったことだった。
intel Mac から Apple Silicon Mac への移行
デフォルトで使用できる移行アプリを使用した。
(ローカルに重要なデータは保存してなかったので、ここで一から環境構築すればよかった。)
以降後に必要なライブラリなどが使用できることを確認して問題ないと判断しました。しかし、新たにnodeやpythonをインストールしようとするとエラーがでてインストールできなかった。(ここで問題発覚)
問題はパッケージのインストール先の違い
intel Mac では /usr/local/bin
配下にインストールされる。
Apple Silicon では /opt/homebrew/opt
配下にインストールされる。
私の環境では念の為再インストールを行っていたのか、両方にインストールされていた。Pathも2つ登録されており、どちらが優先されていたのかは不明である。
(Rosettaを使用して2つの環境を使い分けをするなどできるらしいが、今のところ必要性を感じないのでやめておく。)
パッケージ依存問題の解消
解決方法としては、homebrew, nodenv, pyenv を再インストールすることで解決した。
1 . 既存のhomebrew, nodenv, pyenv の削除
$ rm -r /usr/local/bin/homebrew
$ rm -r /usr/local/bin/nodenv
$ rm -r /usr/local/bin/pyenv
2 . 再インストール
homebrew のインストール(https://brew.sh/ja/)
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
nodenv のインストール
$ brew install nodenv
# パスの設定(zshの場合)
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(nodenv init -)"' >> ~/.zshrc
pyenv のインストール
$ brew install pyenv
# パスの設定(zshの場合)
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
上記の操作によりパッケージが/opt/homebrew
に集約され、動作するようになった。
# nodeのインストール
$ nodenv install 18.16.0
# pythonのインストール
$ pyenv install 3.11.3
まとめ
現在ではintel Macからの移行はレアケースになりつつあるが、intel → Apple Silicon への移行ではパッケージの依存関係で不具合が生じる可能性があることを実感した。このような場合は、移行アシスタントを使用することは避け、一から環境構築を行ったほうがよい。
参考文献
homebrew
pyenv