ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

asdf : 言語バージョン追加時に "No preset version installed for command" エラー

asdfPythonのバージョンを追加インストールしようとしたら、下のようなエラーが起きて、できない状況に遭遇した。

% asdf install python 3.12.3
python-build 3.12.3 /Users/LOGNAME/.asdf/installs/python/3.12.3
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.12.3.tar.xz...
-> https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tar.xz
Installing Python-3.12.3...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use ncurses from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 13.4.1 using python-build 2.4.0-2-ge1f07da7)

Inspect or clean up the working tree at /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20240412084452.14725
Results logged to /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20240412084452.14725.log

Last 10 log lines:
python anaconda3-2023.09-0
make: *** [Modules/_hacl/libHacl_Hash_SHA2.a] Error 126
No preset version installed for command ar
Please install a version by running one of the following:

asdf install python 3.8.18

or add one of the following versions in your config file at 
python anaconda3-2023.09-0
make: *** [Modules/expat/libexpat.a] Error 126

ちなみに、このときのasdfpythonプラグインの状態は以下のようになっている。

% asdf list python
  3.10.12
  3.10.8
  3.11.4
  3.12.2
  3.6.15
  3.8.10
  3.8.17
 *3.8.18
  3.9.17
  3.9.18
  anaconda3-2023.09-0
  miniconda3-3.11-23.10.0-1
  miniconda3-3.8-23.10.0-1
% cat ~/.tool-versions
python 3.8.18
nodejs 18.18.0
golang 1.20.8

Pythonバージョンの3.8.18anaconda3-2023.09-0もインストール済みなのに、「どちらかをインストールせよ」と矛盾したことを言ってくる。

エラーメッセージ内の "No preset version installed for command" で指摘してされているarコマンドの中身を確認すると、下のようになっていた。

% cat ~/.asdf/shims/ar
#!/usr/bin/env bash
# asdf-plugin: python anaconda3-2023.09-0
exec /usr/local/opt/asdf/libexec/bin/asdf exec "ar" "$@" # asdf_allow: ' asdf '

多分これが下のようになっていないといけないんじゃないかと想像して、arコマンドの内容を変更して、Pythonバージョンの追加を再度試みてみた。

% vi ~/.asdf/shims/ar
-# asdf-plugin: python anaconda3-2023.09-0
+# asdf-plugin: python 3.8.18
% asdf reshim
% asdf install python 3.12.3
python-build 3.12.3 /Users/LOGNAME/.asdf/installs/python/3.12.3
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.12.3.tar.xz...
-> https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tar.xz
Installing Python-3.12.3...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use ncurses from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 13.4.1 using python-build 2.4.0-2-ge1f07da7)

Inspect or clean up the working tree at /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20240412090619.17267
Results logged to /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20240412090619.17267.log

Last 10 log lines:
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'
ld: warning: directory not found for option '-L/Users/LOGNAME/.asdf/installs/python/3.12.3/lib'

エラーメッセージの内容は変わったが、やはりダメだ。

それなら、最初のエラーメッセージで指摘されているanaconda3-2023.09-0が存在すること自体が悪いのかもしれないと思ったので、これを削除した上で、再度試みてみたら上手く行った。

% asdf uninstall python anaconda3-2023.09-0
% asdf reshim
% asdf install python 3.12.3
python-build 3.12.3 /Users/LOGNAME/.asdf/installs/python/3.12.3
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.12.3.tar.xz...
-> https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tar.xz
Installing Python-3.12.3...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use ncurses from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.12.3 to /Users/LOGNAME/.asdf/installs/python/3.12.3
asdf: Warn: You have configured asdf to preserve downloaded files (with always_keep_download=yes or --keep-download). But
asdf: Warn: the current plugin (python) does not support that. Downloaded files will not be preserved.

ちなみに、ググって調べてみると、この障害現象はasdfの他の言語プラグインでも発生するらしい。

上のような現象が起きた場合は、エラーメッセージ内で指摘されたプラグインの特定のバージョンを一旦アンインストールすれば解決できるんじゃないだろうか。

なお、anaconda3-2023.09-0が存在しており上のような障害現象が起きている状態で、asdfのflutterプラグインでも下のような不可解な現象に遭遇した。

% asdf plugin add flutter
% asdf list all flutter
No compatible versions available (flutter )

これもanaconda3-2023.09-0をアンインストールしたら解決することができた。

asdfではpythonプラグインのanacondaは使わない方が無難だということを思い知らされた。

【参照リンク】

github.com