Apple Silicon macにminicondaをx86, arm両方インストールする

まず、Homebrewを2通りインストールしておく。その後、それぞれのHomebrewでminicondaをインストールする。ただしこのままではconda initで被ってしまうので、手動でconda initを走らせる代わりに、以下で~/.bash_profileにまとめて設定する。

これによって、arm, x86のarchitecture両方のminicondaをインストールできた。
主にPythonのライブラリでたまにどちらかが使えない時に使い分けるのに便利。直近だと、PythonからMATLABを呼び出すのが、x86しか対応していなくて困った。

# Minicondaのパスを設定
_arm_conda="/opt/homebrew/Caskroom/miniforge/base"
_x86_conda="/usr/local/Caskroom/miniconda/base"

# アーキテクチャをチェックして適切なcondaを初期化
if [[ "$(uname -m)" == "arm64" ]]; then
    # ARMの場合
    __conda_setup="$("${_arm_conda}/bin/conda" 'shell.bash' 'hook' 2> /dev/null)"
else
    # x86の場合(Rosettaを通じて)
    __conda_setup="$("${_x86_conda}/bin/conda" 'shell.bash' 'hook' 2> /dev/null)"
fi

if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "${_arm_conda}/etc/profile.d/conda.sh" ]; then
        . "${_arm_conda}/etc/profile.d/conda.sh"
    elif [ -f "${_x86_conda}/etc/profile.d/conda.sh" ]; then
        . "${_x86_conda}/etc/profile.d/conda.sh"
    else
        export PATH="${_arm_conda}/bin:${_x86_conda}/bin:$PATH"
    fi
fi

unset __conda_setup

なお、以下も追記しておくと、x86, armのアーキテクチャのターミナルの変更がx86もしくはarmと打ち込むだけで終わって便利である。

############################################################
#
# Refs: https://oku.edu.mie-u.ac.jp/~okumura/macosx/m1.html
# Prompt Rosseta or not
#
############################################################
alias x86='exec arch -x86_64 /bin/zsh'
alias arm='exec arch -arm64e /bin/zsh'

ARCH=`uname -m`
PROMPT="${ARCH} %m:%~%# "

Created at 2024-03-04 08:41:33