LoginSignup
1
2

More than 1 year has passed since last update.

Rosettaも使う人のM1 Macの環境整備Step1

Last updated at Posted at 2021-05-30

はじめに

M1 Macを買ったので最初にやった環境整備を書いていきます。
ObsPy等の地球物理系のモジュール、kerasやtensorflowを実行する環境を作っていきます。
現状Rosettaを使わないと仕事ができなさそうなので、両方を使える環境を構築していきます。
随時更新予定。

マシンスペック:
MacBook Pro (13-inch, M1, 2020)
チップ Apple M1
OS MacOs BigSur 11.1

参考にしたサイト:
1. https://oku.edu.mie-u.ac.jp/~okumura/macosx/m1.html
2. https://zenn.dev/osuzuki/articles/380be0f682d72d
3. https://zenn.dev/ik11235/scraps/17d44ec45ea8f7
4. 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と同じように使うことができます。
terminal
もう一度

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

Step2ではObsPyをインストールします。

1
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
1
2