メモ: WSLでcondaをインストール

2021-06-13 Tips

ことのアラマシ

FDTD法という電磁波シミュレーションしたい

高額なソフトが必要

MEEPというフリーソフトで可能

MEEPはLinux or Mac環境でしか動作しないらしい…

ということでLinux環境をWindows上に構築する必要が生じました。
最近は便利なものでWindows Subsystem for Linux(WSL)というMicrosoft謹製ツールが配布されており,手軽にLinux環境が構築できるとのこと。
いまにして思えばこれを鵜呑みにしたのが良くなかったような…

導入手順

導入自体はMEEPの公式ドキュメントで説明されている。

まずはパッケージ管理ツールminicondaを導入する

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p <desired_prefix>
export PATH=<desired_prefix>/bin:$PATH

condapymeepを導入する。

conda create -n mp -c conda-forge pymeep

ところが,2手目の

bash miniconda.sh -b -p

がうまくいかなかった。

OSError: [Errno 40] Too many levels of symbolic links:

原因がよくわからず2週間を費やした(さすがにこればっかりやってたわけじゃないけど…)。

解決

調べても情報があまり出てこなくて時間を費やした。
結局のところWSL上でAnacondaを入れようとしたときに発生する不具合のようだった(たぶん)。
Githubでタイムリーなissueが立っていて,これを参考に解決に至った。

あとはこのissueに追記した通り。
原因は

  • pkgs/ncurses-6.2-h58526e2_4/share/terminfo/N/ncr260vt300wpp
  • pkgs/ncurses-6.2-h58526e2_4/share/terminfo/E/Eterm

で,これらに含まれるリンクが良くないとのこと。
issue #10333 (comment)では別途ncursesパッケージをAnacondaのページから拾ってきて上記2ファイルを差し替えれば良いとのことだったが,これでは解消しなかった。
渡邉の環境ではリンク先である

miniconda3/share/terminfo/N/ncr260vt300wpp

をコピーしてきて

pkgs/ncurses-6.2-h58526e2_4/share/terminfo/N/ncr260vt300wpp

を置き換えたところminicondaのインストールが成功した
(Etermのファイルサイズが違うぞって怒られたけど無視)。