1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

asdf や mise で Unable to parse versions というエラーが出た場合の対処

Last updated at Posted at 2025-01-10

はじめに

2025/1/8 に嵌ったエラーの備忘録です

エラーの内容

.tool-versions ファイルに aws-sam-cli 1.132.0 と書かれている状態で以下のコマンドを実行しました

mise install

すると、以下のエラーが発生しました

mise ERROR [~/some-path/.tool-versions] aws-sam-cli@1.132.0: error running list-all: exited with code 1                          
asdf-pyapp: [ERROR] Unable to parse versions for 'aws-sam-cli'
mise ERROR error resolving versions
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

エラー原因

エラーメッセージに従い、 --verbose をつけて実行してみます

mise install --verbose

実行結果

DEBUG ARGS: /opt/homebrew/bin/mise install --verbose
DEBUG EnvResults
DEBUG config: ~/some-path/.tool-versions
DEBUG $ /Users/somebody/.local/share/mise/plugins/aws-sam-cli/bin/list-all 
DEBUG ToolRequest.is_installed: error running list-all: exited with code 1
asdf-pyapp: [ERROR] Unable to parse versions for 'aws-sam-cli'
DEBUG install_some_versions: aws-sam-cli@1.132.0
DEBUG $ /Users/somebody/.local/share/mise/plugins/aws-sam-cli/bin/list-all 
Error: 
   0: error running list-all: exited with code 1
      asdf-pyapp: [ERROR] Unable to parse versions for 'aws-sam-cli'

Location:
   src/plugins/asdf_plugin.rs:120

Version:
   2024.12.19 macos-arm64 (2024-12-23)

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
mise ERROR [~/some-path/.tool-versions] aws-sam-cli@1.132.0: error running list-all: exited with code 1                          
asdf-pyapp: [ERROR] Unable to parse versions for 'aws-sam-cli'
mise ERROR error resolving versions
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

~/.local/share/mise/plugins/aws-sam-cli/bin/list-all でエラーが起こっていることが分かります

asdf install でも同じエラーが発生します

内容を確認すると、以下のようになっています

#!/usr/bin/env bash

set -euo pipefail

current_script_path=${BASH_SOURCE[0]}
plugin_dir=$(dirname "$(dirname "$current_script_path")")
toolname=$(basename "$plugin_dir")

# shellcheck source=../lib/utils.bash
source "${plugin_dir}/lib/utils.bash"

get_package_versions "${toolname}" | sort_versions | xargs echo

../lib/utils.bash を参照しているので、 ~/.local/share/mise/plugins/aws-sam-cli/lib/utils.bash を確認します

すると、以下のような行が存在します

  version_output_raw=$("${ASDF_PYAPP_RESOLVED_PYTHON_PATH}" -m pip install ${pip_install_args[@]+"${pip_install_args[@]}"} "${package}==" 2>&1) || true

つまり、 python -m pip install aws-sam-cli== というコマンドが内部的に実行されていることが分かります

ではこれを実行してみましょう

python -m pip install aws-sam-cli==

実行結果

ERROR: Invalid requirement: 'aws-sam-cli==': Expected end or semicolon (after name and no valid version specifier)
    aws-sam-cli==
               ^

これがエラーの原因です

pip を使って aws-sam-cli のバージョンを取得しようとしていますが、これがエラーになっています

実は、以前は pip install aws-sam-cli== というコマンドでインストール可能なバージョンの一覧が取得できていました

しかし、 pip 24.1 以降ではこのコマンドが使えなくなってしまいました

Remove support for legacy versions and dependency specifiers.

Packages with non standard-compliant versions or dependency specifiers are now ignored by the resolver. Already installed packages with non standard-compliant versions or dependency specifiers must be uninstalled before upgrading them. (#12063)

pip の新しいバージョンでは以下のコマンドでインストール可能なバージョンの一覧が取得できます

pip index versions <パッケージ名>

実はエラーを出している asdf-pyapp に Pull Request も出されていますが、残念ながら放置状態です

aws-sam-cli や awscli など、 pip でインストールするタイプのツールは asdf-pyapp を使用しています

これらのツールについては同様のエラーが発生すると思われるので、以下の対処を行う必要があります(Pull Request がマージされるまでは)

対処方法

もちろん、 pip のバージョンを 23 以前に落とすという方法でも対処可能ですが、推奨はできません

別の方法で対応します

mise

まず今使っている aws-sam-cli プラグインをアンインストールします

mise plugin remove aws-sam-cli

~/.config/mise/config.toml に以下の行を追加します

[alias]
aws-sam-cli = "https://github.com/kenichikat/asdf-pyapp.git"

本来であれば aws-sam-cli のプラグインには https://github.com/amrox/asdf-pyapp.git が使用されますが、これを https://github.com/kenichikat/asdf-pyapp.git (Pull Request を出している人のフォーク)に設定します

この状態で改めてプラグインをインストールします

mise plugin add aws-sam-cli

これでエラーが発生しなくなります

asdf

まず今使っている aws-sam-cli プラグインをアンインストールします

asdf plugin remove aws-sam-cli

https://github.com/kenichikat/asdf-pyapp.git (Pull Request を出している人のフォーク)を指定してプラグインを再インストールします

asdf plugin add aws-sam-cli https://github.com/kenichikat/asdf-pyapp.git

これでエラーが起こらなくなります

まとめ

pip のバージョンアップでこのような影響があるとは

とりあえずはプラグインのリポジトリー指定で回避できますが、どうにか Pull Request をマージしてもらえないものか

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?