anyenv から asdf へ移行した時のメモ
前提条件
移行前の状態は以下の通り
- Homebrew で anyenv をインストールし、主に nodenv、pyenv を使っている
- macOS Ventura 13.1
anyenv のアンインストール
早速 brew uninstall anyenv
したいところだが、そうすると nodenv、pyenv が残った状態になってしまいそう?だ。
まずはインストール済みの **env を確認して、そこからアンインストールしていった方が良い気がする。
$ anyenv versions
nodenv:
16.15.1
* 16.17.0 (set by /Users/t3yamoto/.anyenv/envs/nodenv/version)
pyenv:
system
* 3.7.10 (set by /Users/t3yamoto/.anyenv/envs/pyenv/version)
3.9.13
3.11.1
mac を新調してそれほど期間が経っていないので、nodenv と pyenv の数バージョンのみであった。
それぞれアンインストールしていく
# pyenv のアンインストール
anyenv uninstall pyenv
anyenv: remove /Users/t3yamoto/.anyenv/envs/pyenv? y
~ took 18s
# nodenv のアンインストール
$ anyenv uninstall nodenv
anyenv: remove /Users/t3yamoto/.anyenv/envs/nodenv? y
~ took 2s
anyenv もアンインストールしていく
$ brew uninstall anyenv
Warning: Use python-tabulate instead of deprecated libpython-tabulate
Uninstalling /opt/homebrew/Cellar/anyenv/1.1.5... (23 files, 31.1KB)
インストール時に追加した ~/.zshrc
の以下設定も削除
eval "$(anyenv init -)"
自分の環境では ~/.zprofile
に以下設定があったのでこちらも削除しておいた
export PYENV_ROOT="$HOME/.anyenv/envs/pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
~/.anyenv/
ディレクトリは残っているので削除しておく
$ rm -rf ~/.anyenv/
これで以上かなたぶん。お世話になりました。
asdf のインストール
公式ページを見ながら進める
$ brew install asdf
...
~ took 7m15s
環境によっては事前に以下が必要
$ brew install coreutils curl git
~/.zshrc
に以下コマンドで設定を追加
(ZSH & Homebrew の組み合わせの場合はこのコマンド。環境によって違うので注意)
$ echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
ちょっと待てよ。自分の環境では Fig を入れてるので、Fig post block より上に移動した方が良さそうだ。こんな感じ。
# 中略
. /opt/homebrew/opt/asdf/libexec/asdf.sh
# Fig post block. Keep at the bottom of this file.
[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.post.zsh"
バージョンを確認。ひとまずインストールまでは出来たようだ。
$ asdf --version
v0.11.1
Node.js 導入
使いたい言語、ツール毎にプラグインを導入する必要がある。
Node.js の場合は、asdf-nodejs を導入する。
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
特定バージョンの Node.js をインストール
$ asdf install nodejs 16.17.0
カレントディレクトリで使用するバージョンを指定
$ asdf local nodejs 16.17.0
.tool-versions
ファイルが作成される。これが用意されているプロジェクトであれば asdf install
で必要な言語・ツールが一括インストール可能。
nodejs 16.17.0
16.17.0 が使用可能に
$ node -v
v16.17.0
Python 導入
Python の場合は asdf-python を導入する。
流れは Node.js と同様。
$ asdf plugin-add python
$ asdf install python 3.9.13
$ asdf local python 3.9.13
$ python -V
Python 3.9.13
**env 前提のプロジェクトで asdf を使う
**env の場合、.node-version
、.python-version
などのように言語毎のバージョンファイルが存在する。
この場合、asdf の設定ファイルである ~/.asdfrc
で以下設定を行う。
legacy_version_file = yes
ちなみに .node-version
と .tool-versions
で設定が競合する場合は、.tool-versions
が優先される。