0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macOS(zsh)にてシステムワイドにasdfをインストール

Last updated at Posted at 2023-02-27

こんにちは、たけるです^^。

皆さんは、スクリプト言語系開発環境のバージョンアップ管理ツール、何をお使いですか?
私は以前は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の場合、左側ペインにて「ユーザとグループ」を選択し、表れた右側ペインにて「グループ」のところにある「アカウントを追加...」ボタンを押します。

image.png

ログインパスワードを訊かれますので入力します。

アカウントの作成ウィザードが表示されるので、「新規アカウント」のプルダウンメニューを「グループ」に変更します。
image.png

image.png

グループ名に"asdf"と入力してグループを作成します。

image.png

グループ"asdf"が作成されたことを確認し、右側の"ⓘ"をクリックします。
image.png

asdfを使用するユーザをONにしましょう。
image.png

これで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に以下を追記します。

/etc/zprofile
追記:
for i in /etc/profile.d/*.sh ; do
    [ -r $i ] && source $i
done

これで/etc/profile.d/の中にあるファイルを実行しにいきます。

最後に、/etc/profile.d/asdf.shファイルを作成します。

/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を購入したのを機にまたコーディング生活を送りたいと思っているので、活用していきたいと思います。

ではでは。
たけるでした^^。

参考文献

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?