目次
TL;DR
- 2025年7月15日以降、Anacondaの
conda-anaconda-tos
プラグインがインストーラに同梱され,defaults
チャネル利用時に利用規約(ToS)同意が必須に。 - Minicondaのアップデートで
.condarc
にdefaults
が自動追加される仕様と相まって,非対話環境(Docker/CI)ではビルド時にCondaToSNonInteractiveError
が発生する。 - これを2パタンで解決したよって話。
ゴール:Docker ビルド中の「CondaToSNonInteractiveError」を解決する
Dockerイメージのビルド中、conda env create
でCondaToSNonInteractiveErrorが発生。
原因は、
- Minicondaの最新版で
.condarc
にdefaults
が自動追加される仕様 - 2025年7月15日からの
conda-anaconda-tos
プラグイン同梱によるToS同意必須化
defaults
を使わない構成(conda-forge
のみ)に変更することで、ToSプロンプトを回避し安定してビルドできるようになりました。
発生環境
- ベースイメージ:Ubuntu 20.04
- パッケージ管理:Miniconda(24.9.2-0以降)
- ビルドコマンド:
conda env create -f environment.yml
User-facing Changes
Miniconda 24.x release notes
- A .condarc file is written into the installation directory to set the channel to Anaconda’s defaults channels.
原因と再現ログ
1) 事象の再現とログ確認
ビルドが以下で停止:
RUN conda env create -f /workdir/environment.yml
CondaToSNonInteractiveError: Terms of Service have not been accepted for:
• https://repo.anaconda.com/pkgs/main
• https://repo.anaconda.com/pkgs/r
To accept a channel's Terms of Service:
conda tos accept --override-channels --channel CHANNEL
非対話の Docker ビルドでは同意プロンプトに答えられないため停止します。
2) 原因切り分け
- Miniconda 24.9.2-0以降,インストール直後の
.condarc
にdefaults
が自動追加される。 conda config --remove channels defaults
では.condarc
の記述は消せないため,ビルド時にdefaults
が参照され続ける。defaults
はToS対象チャネルのため,未同意だとエラー発生。
対処法
方法1(推奨):defaults
を使わずconda-forge
のみ利用
Minicondaインストール直後に.condarc
を書き換え,defaults
を削除または置換。
# Miniconda のサイレントインストール直後
RUN bash /workdir/$MINICONDA -b -p /opt/conda
# 重要:defaults を使わない(ToS 対象を外す)
RUN sed -i 's/defaults/conda-forge/g' /opt/conda/.condarc
# 以降、環境作成
RUN conda env create -f /workdir/environment.yml
方法2:自動同意でdefaults
を継続利用
既存環境を崩したくない場合は,自動同意を設定。
ENV CONDA_PLUGINS_AUTO_ACCEPT_TOS=yes
または
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
FAQ
まとめ
- ビルド失敗の正体は ToS 同意必須化 × Miniconda の
defaults
自動設定によるもの。 - 根本回避は
defaults
不使用,代替は自動同意。 - 運用ポリシーに応じて選択可能。
コメント