🤯

asdf globalコマンドが消えた / 使えない

2025/02/14に公開

TL; DR

asdf を v0.16.0 以降にアップグレードすると、 おなじみの asdf global コマンドが使えなくなっているのでその対処方法を記しておきます。

globalのバージョン指定

asdf global nodejs 23.5.0

asdf set --home nodejs 23.5.0 

で置き換えると良い

.tool-versionsへのバージョン指定

asdf local nodejs 23.5.0

asdf set --parent nodejs 23.5.0 

で置き換えると良い

背景

要約

global で設定した値が、.tool-versions で上書きされてしまう挙動が、ユーザーの混乱を招くので、変更した。今後は、 asdf set コマンドのオプションで asdf globalasdf local の機能を提供します、ということらしい。

和訳(Claude 3.5 Sonnetによるもの)

asdf globalとasdf localコマンドは削除されました。「global(グローバル)」と「local(ローカル)」という用語は不適切で誤解を招くものでした。asdfは実際には、どこでも適用される「グローバル」バージョンをサポートしていません。asdf globalで指定されたバージョンは、現在のディレクトリにある.tool-versionsファイルで異なるバージョンが指定されていれば、簡単に上書きされてしまいます。これはユーザーにとって混乱の原因となっていました。
新しいasdf setは、デフォルトではasdf localと同じように動作しますが、ユーザーのホームディレクトリ(--homeオプション)や親ディレクトリのいずれかにある既存の.tool-versionsファイル(--parentオプション)でバージョンを設定するためのフラグも備えています。この新しいインターフェースにより、asdfがバージョンをどのように解決するかについてより良い理解が得られ、同等の機能が提供されることが期待されます。

原文

asdf global and asdf local have been removed. The "global" and "local"
terminology was wrong and also misleading. asdf doesn't actually support
"global" versions that apply everywhere. Any version that was specified with
asdf global could easily be overridden by a .tool-versions file in your
current directory specifying a different version. This was confusing to users.
The new asdf set behaves the same as asdf local by default, but also has
flags for setting versions in the user's home directory (--home) and in an
existing .tool-versions file in one of the parent directories (--parent).
This new interface will hopefully convey a better understanding of how asdf
resolves versions and provide equivalent functionality.

https://github.com/asdf-vm/asdf/blob/9432bfc5dc732c50ff715460050390cf07e40ce7/docs/guide/upgrading-to-v0-16.md?plain=1#L104
より転載

Discussion