##はじめに
M1 Macを買ったので最初にやった環境整備を書いていきます。
ObsPy等の地球物理系のモジュール、kerasやtensorflowを実行する環境を作っていきます。
現状Rosettaを使わないと仕事ができなさそうなので、両方を使える環境を構築していきます。
随時更新予定。
マシンスペック:
MacBook Pro (13-inch, M1, 2020)
チップ Apple M1
OS MacOs BigSur 11.1
参考にしたサイト:
- https://oku.edu.mie-u.ac.jp/~okumura/macosx/m1.html
- https://zenn.dev/osuzuki/articles/380be0f682d72d
- https://zenn.dev/ik11235/scraps/17d44ec45ea8f7
- https://www.usagi1975.com/202104172257/
##arm64なのかx86_64なのか問題
M1 MacではARMベースのApple独自チップが搭載されていて、今までのIntel Macで実行できていたモジュールが実行できないという状況がままあります。そのような問題を解決してくれるのがrosettaなのですが、それを使うとIntel Macと同じような環境を構築することができます。そのまま使うとアーキテクチャとしてはarm64, Rosettaを使うとx86_64となります。armとRosettaの両方の環境に対してそれぞれ、miniforge3とmanbaforgeをインストールします。
miniforge3&mambaforgeの.shファイルをダウンロードします。
https://github.com/conda-forge/miniforge
arm64の環境で
bash Miniforge3-MacOSX-arm64.sh
x86_64の環境で
bash Mambaforge-MacOSX-x86_64.sh
そして、使用するアーキテクチャによって有効にするパス名を変更できるようにします。
プロンプトはarmの時にarm, x86_64の時にintelと表示されるようにしました。
今までbashで粘っていましたが、今回.zshに初挑戦です。これでターミナル起動時の警告が消えます。
.zshrcの中身は参考サイトを見ながら少し変えました。$hogeにはユーザーネームが入ります。
if [[ $ARCH == 'arm64' ]]; then
PROMPT="[arm] %m:%~%# "
else
PROMPT="[intel] %m:%~%# "
fi
#conda
if [[ $ARCH == 'arm64' ]]; then
# arm64 => Miniforge3
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/$hoge/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/$hoge/miniforge3/etc/profile.d/conda.sh" ]; then
. "/Users/$hoge/miniforge3/etc/profile.d/conda.sh"
else
export PATH="/Users/$hoge/miniforge3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
else
# x86_64 => Mambaforge
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/$hoge/mambaforge/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/$hoge/mambaforge/etc/profile.d/conda.sh" ]; then
. "/Users/$hoge/mambaforge/etc/profile.d/conda.sh"
else
export PATH="/Users/$hoge/mambaforge/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
fi
##ターミナルの設定(Rossetaを使用できるようにする)
まず何もせずにターミナルを開いて
uname -m
とすると
amr64
と表示されます。一旦ターミナルを閉じて、ターミナルのアイコンを右クリックして情報を見るとRosettaを使用して開くという項目があるので、それにチェックを入れて起動するとインテルMacと同じように使うことができます。
もう一度
uname -m
すると今度は
x86_64
と表示されます。
アーキテクチャの切り替えは、一度x86_64を使ったあとだと、例えばx86_64からarm64だと、
arch -arm64 bash
とすれば大丈夫です。
##Homebrewのインストール
arm64の場合
sudo mkdir /opt/homebrew
sudo chown -R $(whoami) /opt/homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C /opt/homebrew
x86_64の場合は通常通りHomebrewのページのコマンドを使えば良いです。
.zshrcにパスを追加します。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
if [[ $ARCH == 'arm64' ]]; then
PATH=/opt/homebrew/bin:/opt/homebrew/sbin:$PATH
fi