見出し画像

ローカル環境で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って便利ですよね。それこそメリットに挙げられていることに一つですが言語が違ってもプラグインのインストールから使用方法まで簡単にできることがものすごく大きいと感じています。今後も新言語を入れる必要がある時はこれを介してインストールしていきます。

この記事が気に入ったらサポートをしてみませんか?