まず、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