【ruby/rust】バージョン管理をasdfにまとめる
こんにちは、しきゆらです。
今回は、だいぶ旬に乗り遅れた感がありますが、言語等のバージョン管理をasdf
に乗り換えたので導入方法や使い方をメモしておきます。
導入の経緯
導入に経緯を一応書いておくと、私はPCの組み換えやOS不調等で、結構な頻度でクリーンインストールをします。
そのたびにRubyをインストールするためにrbenvを導入し、Nodeを使うためにnを導入し、ということを毎度行っていました。
この作業をあまり意識せずにやっていたのですが、先日ふと面倒だなと思うようになりました。
というのも、それぞれ年に数回程度の頻度でしかやらないので、毎度インストールするタイミングで調べて手順をなぞる、というのが知識にもならず無駄に時間がかかるだけなのでは、という風に思ってしまいました。
この辺を解決するツールはないのか、調べてみると、今回使った「asdf
」というのがあるということを知ったので触ってみた、という感じです。
導入手順
では、asdf
のインストール方法をメモしておきます。
なお、公式サイトの手順をなぞっています。
また、ここではWSL2上で動いているUbuntuに入れていきます。
# 依存パッケージを入れておく
sudo apt install curl git
# asdf本体を落としてくる
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2
# .zshrcに以下を追記
. $HOME/.asdf/asdf.sh
これにて導入は完了です。asdf
と実行して、ずらっと文言が出てくれば導入成功です。
> asdf
version: v0.10.2-7e7a1fa
MANAGE PLUGINS
asdf plugin add <name> [<git-url>] Add a plugin from the plugin repo OR,
add a Git repo as a plugin by
specifying the name and repo url
asdf plugin list [--urls] [--refs] List installed plugins. Optionally show
git urls and git-ref
asdf plugin list all List plugins registered on asdf-plugins
repository with URLs
asdf plugin remove <name> Remove plugin and package versions
asdf plugin update <name> [<git-ref>] Update a plugin to latest commit on
default branch or a particular git-ref
asdf plugin update --all Update all plugins to latest commit on
default branch
MANAGE PACKAGES
asdf install Install all the package versions listed
in the .tool-versions file
asdf install <name> Install one tool at the version
specified in the .tool-versions file
asdf install <name> <version> Install a specific version of a package
asdf install <name> latest[:<version>] Install the latest stable version of a
package, or with optional version,
install the latest stable version that
begins with the given string
asdf uninstall <name> <version> Remove a specific version of a package
asdf current Display current version set or being
used for all packages
asdf current <name> Display current version set or being
used for package
asdf where <name> [<version>] Display install path for an installed
or current version
asdf which <command> Display the path to an executable
asdf local <name> <version> Set the package local version
asdf local <name> latest[:<version>] Set the package local version to the
latest provided version
asdf global <name> <version> Set the package global version
asdf global <name> latest[:<version>] Set the package global version to the
latest provided version
asdf shell <name> <version> Set the package version to
`ASDF_${LANG}_VERSION` in the current shell
asdf latest <name> [<version>] Show latest stable version of a package
asdf latest --all Show latest stable version of all the
packages and if they are installed
asdf list <name> [version] List installed versions of a package and
optionally filter the versions
asdf list all <name> [<version>] List all versions of a package and
optionally filter the returned versions
asdf help <name> [<version>] Output documentation for plugin and tool
UTILS
asdf exec <command> [args...] Executes the command shim for current version
asdf env <command> [util] Runs util (default: `env`) inside the
environment used for command shim execution.
asdf info Print OS, Shell and ASDF debug information.
asdf reshim <name> <version> Recreate shims for version of a package
asdf shim-versions <command> List the plugins and versions that
provide a command
asdf update Update asdf to the latest stable release
asdf update --head Update asdf to the latest on the master branch
RESOURCES
GitHub: https://github.com/asdf-vm/asdf
Docs: https://asdf-vm.com
"Late but latest"
-- Rajinikanth
必要な言語をインストールしてみる
ここでは、よく使うRubyとちょっと触っているRustをインストールしていきます。
asdf
は、それぞれ言語ごとにプラグインを追加していく方式になっています。
なので、まずはプラグインを導入していきます。
なお、追加できるプラグインの一覧はこちらのコマンドで確認できます。
asdf plugin list all
プラグインを追加するにはasdf pluigin add ruby
という感じで言語ごとにプラグインを入れていきます。
# 言語ごとのプラグインを追加
asdf plugin add ruby
asdf plugin add rust
# インストールできるバージョン等を確認
asdf list all ruby
asdf list all rust
# インストールする
asdf install ruby 3.1.2
asdf install rust 1.62.1
# システム全体で使うバージョンを指定する
asdf global ruby 3.1.2
asdf global rust 1.62.1
# 部分的に使うバージョンを指定する
asdf local ruby 2.7.6 # ここではインストールしていないが、カレントディレクトリ以下で使うバージョンを指定できる
# バージョンを表示してみる
ruby -v
# => ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
rustc --version
# rustc 1.62.1 (e092d0b6b 2022-07-16)
こんな感じで、asdf
一つで複数言語のバージョンを管理することができるようになりました。
コマンドを覚えるのがちょっと面倒ですが、asdf
一つでよいので環境構築しなおすことが多いので手軽に環境を戻せるようになりました。
とても便利でよい。
まとめ
今回は、asdf
というツールを使って実行環境のバージョン管理を一元管理するようにしてみました。
1つのツールの使い方を覚えれば、複数の言語の導入やバージョン管理をいい感じにできるようになりとても便利です。
さて、今回はここまで。
おわり