asdf エラー: no plugin named completion
問題の概要
source ~/.zshrc
を実行した際に、以下のような asdf バージョンマネージャーからのエラーが発生する場合があります:
Unknown command: `asdf completion zsh`
No plugin named completion
このエラーは、oh-my-zsh のプラグインとして plugins=(asdf)
を設定している環境で発生します。asdf は $HOME/.asdf
にインストールされており、特に最近設定を変更した覚えがない場合でもこの問題が発生することがあります。
原因
この問題の主な原因は、oh-my-zsh の最新バージョンと asdf の古いバージョン間の互換性の問題です。
特に、oh-my-zsh の92da310 コミット以降、asdf v0.15.x 以前のバージョンでは asdf completion zsh
コマンドが正しく動作しなくなりました。
解決方法
方法1: asdf のアップグレード(推奨)
asdf を最新バージョン(v0.16.3 以上)にアップグレードするのが最も確実な解決策です。
# Homebrew でインストールしている場合
brew upgrade asdf
# asdf リポジトリから直接更新
asdf update
# リリースページから最新版をダウンロード
# https://github.com/asdf-vm/asdf/releases
方法2: v0.16 へのアップグレードガイドに従う
v0.15.x 以前からアップグレードする場合は、公式のアップグレードガイドに従うことをお勧めします:
- asdf 公式アップグレードガイドを参照
- 新しいバイナリをリリースページからダウンロード
- パスに追加
- 必要な環境変数を設定:
export ASDF_DATA_DIR="$HOME/.asdf"
export PATH="$ASDF_DATA_DIR/shims:$PATH"
- シムを再生成:
asdf reshim
方法3: 代替設定(一時的な解決策)
アップグレードが難しい場合は、oh-my-zsh の asdf プラグインを使用せず、直接 asdf を読み込む方法もあります:
# .zshrc から plugins=(asdf) を削除し、代わりに:
source "$HOME/.asdf/asdf.sh"
WARNING
これは一時的な解決策であり、asdf の最新機能や最適化を得るためには、やはりアップグレードすることが推奨されます。
確認方法
現在の asdf バージョンを確認するには:
asdf --version
正しくアップグレードされたか確認するには:
source ~/.zshrc
# エラーが発生しなければ成功
まとめ
no plugin named completion
エラーは、oh-my-zsh と asdf のバージョン不一致が原因です。asdf を v0.16.3 以上にアップグレードすることで解決できます。
アップグレード後も問題が解決しない場合は、環境変数の設定やシムの再生成が必要な場合があります。asdf のバージョン管理ツールとしての機能を最大限に活用するためにも、定期的なアップデートを心がけましょう。