😀
anyenvからasdfに移行した話
anyenvを使っていた私が、asdfに乗り換えた時に実施した手順を残しておきます。
環境
- masOS Monterey 12.3.1
- fish 3.4.1
- fisher 4.3.1
- homebrew 3.4.8
移行前のconfig.fishの状態
特に変わったことはしておらず、ただhomebrewとanyenvの有効化をしているだけです。
if status is-interactive
source (/opt/homebrew/bin/brew shellenv|psub)
source (anyenv init - fish|psub)
# Commands to run in interactive sessions can go here
end
anyenvをやめる
anyenvをやめるにあたり、$HOME/.anyenv
とanyenv自体の削除も考えたのですが、asdf移行後にまた戻ってくる可能性を考えると、これらは削除せず、単にconfig.fish
からanyenv init
の実行をやめて、関係するディレクトリをPATHに乗せない方針にしました。
なので、config.fish
でsource (anyenv init - fish|psub)
をコメントアウトしてシェルを再起動しました。
これにより、PATHから*envのshimsとbinが削除されました。
ただ、引き続き$HOME/.anyenv/bin
へのPATHは残っています。ただ、自分の環境にはこのディレクトリは存在せず、また、このPATHを追加しているのはanyenvのインストール手順なので、今回はanyenvを削除しない方針なので残しておきます。
anyenvをやめた後のconfig.fish
。(コメントアウトしただけ)
if status is-interactive
source (/opt/homebrew/bin/brew shellenv|psub)
# source (anyenv init - fish|psub)
# Commands to run in interactive sessions can go here
end
asdfをインストールする
これでanyenvに関連した*envは動かなくなるので、asdfのGet Startedの通りにインストールを進めます。
brew install asdf
echo -e "\nsource "(brew --prefix asdf)"/libexec/asdf.fish" >> ~/.config/fish/config.fish
# シェルを再起動
各種pluginを入れる
私は、goenvとnodenvとpyenvを使っていたので、最後にそれらを有効化しました。
# nodejs
asdf plugin-add nodejs
asdf install nodejs latest
asdf install nodejs 16.15.0
asdf global nodejs 16.15.0
# golang
asdf plugin-add golang
asdf install golang 1.18.1
asdf global golang 1.18.1
# python
asdf plugin-add python
asdf install python latest
asdf global python 3.10.4
(2022-06-10追記)
.python-version
といったレガシーな書き方をしているプロジェクトも扱っているので、~/.asdfrc
に以下を記入する。
legacy_version_file = yes
まとめ
- anyenvで入れた*env系を一時的に無効化するのであれば、
anyenv init
をコメントアウトするのが良い。- anyenvの削除で深追いをしない!
- asdfのマニュアルにはfish&Homebrewの場合の手順が記載されていてとても助かった。
- anyenvの削除で深追いをしない!
皆さんも良きasdfライフを!
Discussion