Closed6

anyenv から asdf へ移行した時のメモ

t3yamotot3yamoto

前提条件

移行前の状態は以下の通り

  • Homebrew で anyenv をインストールし、主に nodenv、pyenv を使っている
  • macOS Ventura 13.1
t3yamotot3yamoto

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/

これで以上かなたぶん。お世話になりました。

t3yamotot3yamoto

asdf のインストール

公式ページを見ながら進める
https://asdf-vm.com/guide/getting-started.html

$ 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
t3yamotot3yamoto

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 で必要な言語・ツールが一括インストール可能。

.tool-versions
nodejs 16.17.0

16.17.0 が使用可能に

$ node -v
v16.17.0
t3yamotot3yamoto

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
t3yamotot3yamoto

**env 前提のプロジェクトで asdf を使う

**env の場合、.node-version.python-version などのように言語毎のバージョンファイルが存在する。
この場合、asdf の設定ファイルである ~/.asdfrc で以下設定を行う。

~/.asdfrc
legacy_version_file = yes

https://asdf-vm.com/manage/configuration.html#home-asdfrc

ちなみに .node-version.tool-versions で設定が競合する場合は、.tool-versions が優先される。

このスクラップは2023/02/18にクローズされました