こんにちは、たけるです^^。
皆さんは、スクリプト言語系開発環境のバージョンアップ管理ツール、何をお使いですか?
私は以前はanyenvを使っておりました。
最近、MacBook Proを購入したので、現在、新しいMacにて色々環境整備を行なっております。
色々調べていたら、今はanyenvよりもasdfの方がトレンドということ。
その理由として、現在のmacOSのデフォルトシェルはzshなのですが、そこでanyenvは動作が重い、ということが挙げられていました。
そこで、一度asdfを試してみようと思います。
今回は、asdfをシステムワイドにインストールいたします。
そのため、asdf本体のインストールにHomebrewは用いません。
Homebrewでインストールした場合、brewコマンドでバージョンを上げた時にディレクトリを追従しない問題があると目にしました。
ただし、必要なパッケージのインストールにはHomebrewを用います。
インストール準備
まずは、必要なパッケージのインストール確認です。
以下のコマンドを実行します。
ここでは、Homebrewがインストールされていることが前提です。
% brew install coreutils curl git
asdf本体のインストール
gitを用いてcloneを実行します。
以下のコマンドを実行します。
ここでは、/opt/local/asdfにインストールいたします。
sudo git clone https://github.com/asdf-vm/asdf.git /opt/local/asdf
次に、システムワイドにインストールしたため、権限を変更する必要があります。
まずは、OS側でasdfを使用するユーザのために"asdf"グループを作成します。
macOS Venturaの場合、左側ペインにて「ユーザとグループ」を選択し、表れた右側ペインにて「グループ」のところにある「アカウントを追加...」ボタンを押します。
ログインパスワードを訊かれますので入力します。
アカウントの作成ウィザードが表示されるので、「新規アカウント」のプルダウンメニューを「グループ」に変更します。

グループ名に"asdf"と入力してグループを作成します。
グループ"asdf"が作成されたことを確認し、右側の"ⓘ"をクリックします。

これでasdfグループにユーザを所属させることができました。
次にasdfをインストールしたディレクトリについて、asdfグループに所属するユーザが使用できるように権限を変更します。
以下のコマンドを実行します。
sudo chgrp -R asdf /opt/local/asdf
sudo chmod -R g+rwXs /opt/local/asdf
sudo chmod 2755 /opt/local/asdf
sudo chmod 2755 /opt/local/asdf/completions
さらに、plugin用のディレクトリを作成します。
sudo mkdir /opt/local/asdf/plugins
sudo chmod 2775 /opt/local/asdf/plugins
次に、シェル起動時にasdfを使えるようにします。
しかしながら、zshでは、bashのように/etc/profile.d/の中を読みにはいきません。
そこで、読みに行くようにするために/etc/zprofileに以下を追記します。
追記:
for i in /etc/profile.d/*.sh ; do
[ -r $i ] && source $i
done
これで/etc/profile.d/の中にあるファイルを実行しにいきます。
最後に、/etc/profile.d/asdf.shファイルを作成します。
新規作成:
export ASDF_DIR=/opt/local/asdf
export ASDF_DATA_DIR=$ASDF_DIR
ASDF_BIN="${ASDF_DIR}/bin"
ASDF_USER_SHIMS="${ASDF_DATA_DIR}/shims"
PATH="${ASDF_BIN}:${ASDF_USER_SHIMS}:${PATH}"
. "${ASDF_DIR}/lib/asdf.sh"
#. "${ASDF_DIR}/completions/asdf.bash"
# append completions to fpath
fpath=(${ASDF_DIR}/completions $fpath)
# initialise completions with ZSH's compinit
autoload -Uz compinit && compinit
ここまできたら、一度シェルを落として再度起動し、以下のコマンドが実行できるか確認しましょう。
% asdf help
version: v0.11.2-8eb11b8
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 current Display current version set or being
used for all packages
asdf current <name> Display current version set or being
used for package
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 help <name> [<version>] Output documentation for plugin and tool
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 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 local <name> <version> Set the package local version
asdf local <name> latest[:<version>] Set the package local version to the
latest provided version
asdf shell <name> <version> Set the package version to
`ASDF_${LANG}_VERSION` in the current shell
asdf uninstall <name> <version> Remove a specific version of a package
asdf where <name> [<version>] Display install path for an installed
or current version
asdf which <command> Display the path to an executable
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"
-- Rajinikant
このように表示されればインストール完了です。
今回はインストールまでとさせていただきたく。
使い方などはまた別の機会にしますね。
さいごに
いかがでしたか^^?
anyenvを使用していた私にとってはどれくらい使い勝手が変わるか楽しみです^^。
MacBook Proを購入したのを機にまたコーディング生活を送りたいと思っているので、活用していきたいと思います。
ではでは。
たけるでした^^。



