とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

クリーンインストールしたmacOSにMinicondaを導入する

クリーンインストールしたmacOSにMinicondaを導入してみたところ、うまくいきませんでした。 検索してみると、なかなか苦戦している人が多いようです。

Anacondaもインストールできません。

GUIインストーラーを使ったインストールでは、最後の画面でエラーメッセージが表示されてAnacondaもMinocondaもインストールできませんでした。

macOSの問題なんだろうなとは思いつつなんとか動かすまで持っていきたいので、以前動かしていた時はどういう構成で動かしていたかを考えてみたところ、そういえばユーザーのデフォルトのShellをBashにしていたことを思い出しました。 試しにBashにしてみると、なんの問題もなく動作することがわかりました。

今回動かないのはmacOSをクリーンインストールして、データ移行は行わずに新規ユーザーを追加した状態のmacOSです。 ライセンスの都合*1でCatalina以降のデフォルトシェルはZSHになったので(同じ理由でデフォルトでインストールされているBashもバージョン3と古いままです)、該当のユーザー設定はZSHになっていました。違いといったらこれくらいかー。

この環境もBashに変更すれば間違いなく解決はしますが、次のようにセットアップするとZSHでも動くようです。 インストールするときにBashを叩くのはちょっとモヤモヤしますけどね。

もう少し突っ込むとMiniconda3-latest-MacOSX-arm64.shを実行するときにbashを使ってスクリプトを実行していますが、 このシェルスクリプトに指定されているシバンは#!/bin/shなんですよね。shはshであって、bashじゃないんだぞこら。

インストールのポイントとしては、conda initをせずに~/miniconda3/etc/profile.d/conda.shを読み込んでいる点ですね。 本来はインストールした後、次を実行するようにドキュメント にも書かれています。

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

実際実行してみると、bashの方は問題なく通りますが、zshの方はスクリプトエラーが発生するみたいなんです。 ちなみにsource ~/miniconda3/etc/profile.d/conda.shしているところは.zshrcにパスを通せば永続化できます。

前置きが長くなってしまいましたが、最終的に次のように実行しました。

% curl -LO https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
% bash Miniconda3-latest-MacOSX-arm64.sh 

Welcome to Miniconda3 py311_23.11.0-2

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 

Do you accept the license terms? [yes|no]
>>> yes

Miniconda3 will now be installed into this location:
/Users/tooyama/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/Users/tooyama/miniconda3] >>> 
PREFIX=/Users/tooyama/miniconda3
Unpacking payload ...

Installing base environment...

Downloading and Extracting Packages:

Preparing transaction: done
Executing transaction: / 

done
installation finished.
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
   run the following command when conda is activated:

conda config --set auto_activate_base false

You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[yes] >>> no

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:

eval "$(/Users/tooyama/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)" 

To install conda's shell functions for easier access, first activate, then:

conda init

Thank you for installing Miniconda3!

インストール後にconda.shを読み込むと、condaコマンドが使えるようになりました。

% source ~/miniconda3/etc/profile.d/conda.sh


% conda env list
# conda environments:
#
base                     /Users/tooyama/miniconda3

% conda activate base
(base) tooyama@m1macmini(01/16/24 11:57:54) ~ 
% python --version
Python 3.11.5

というわけで英語苦手ながら一応Issueは登録したものの、今のところは反応はありません。 この問題、修正されたらいいけどなあ。

*1:GPL v3