ローカル環境でasdfを導入する
導入背景
プログラミングを行う時基本的には言語をパソコンに入れていると思うのですがどのように入れていますか?自分が主に使う言語はgoとts(node)なのですが両方brew経由で入れています。たまにpythonを使うのですがそれに関してはvenvを通して仮想環境を入れている感じです。
今まではそれで問題はなかったのですが最近実務や研究などでバージョンの切り替えを行う需要が出て来ました。brewで直接入れていたらそれができないのでローカル環境でasdfを導入することにしました!
asdfはanyenvみたいな感じで言語のバージョンを簡単に切り替えることができるようにしたCLIツールです。anyenvに比べて早かったり言語以外のツールのバージョンも管理できることで最近利用する人も増えているみたいです。
この記事ではローカル環境をasdfに移行するまでの手順やメモを残していきます!
asdfインストール
まずはインストールしていきます。
このページを参考に入れていきます。自分の環境はmacでシェルはzsh・バッケージマネージャーはHomebrewを使っています。
インストール
brew install asdf
ダウンロード
スクリプトを実行してください
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
oh-my-zshを使っていたら専用のプラグインがあったりするみたいです。
確認
以下のコマンドを打ってコマンドの情報が出て来たら正常にインストールできています!
asdf
ローカルからのマイグレーション
ローカル環境にある言語をそれぞれアンインストールしてasdfのプラグインをインストールしていきます!
go
goの方からいきます!
brew uninstall go
asdfのプラグインを入れます
asdf plugin-add golang https://github.com/kennyp/asdf-golang.git
現時点(2022年9月末)ではgoの最新バージョンは1.19みたいなのでそれを入れていきます。
asdf install golang 1.19
インストールしただけでは適用されないのでグローバルにそのバージョンを使うようにします。
ワークスペースごとに言語のバージョン設定をすることもできるみたいです!
asdf global golang 1.19
※これが終わった後にvscodeを開いた後にgopath周りのエラーが出ました。パス周りを以下に設定して再起動すると治りました。
どうやらバージョンごとに.asdf内にgorootが作られているみたいでそれにともなってgopathもバージョンごとに対応した動的な値にする必要がありそうです。
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$GOPATH/bin
node
nodeもやっていきます!globalにインストールしたもの周りがしっかり動いてくれるか不安です。
ではアンインストールから
brew uninstall node
asdf上のプラグインインストール
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
node 18をインストール・グローバルに適応
asdf install nodejs 18.0.0
asdf global nodejs 18.0.0
動作確認してみたのですがグローバルに入れているツールも正常に動くことが確認できました。ただ検証してみたところyarn周りやグローバルに入れているパッケージ周りは全て以前インストールされたパッケージが参照されているみたいです。
今は動いているのでこのままいきます。解決方法としてはyarn自体のasdfパッケージを入れたりバージョンごとにパッケージを入れたりする方法がありそうです。もしかしたらyarnのパスを動的なものにしておくと良いかも?
ちょっと未検証なので知っていたら教えていただきたいです。
まとめ
最後にasdfって便利ですよね。それこそメリットに挙げられていることに一つですが言語が違ってもプラグインのインストールから使用方法まで簡単にできることがものすごく大きいと感じています。今後も新言語を入れる必要がある時はこれを介してインストールしていきます。
この記事が気に入ったらサポートをしてみませんか?