
いろんなツールのバージョンマネージャの asdf は、個人が占有するPCでユーザーのホームディレクトリにインストールして使うもの。
WindowsやmacOSは個人が占有して使うことが多い気がするけど、Linuxは複数ユーザーで使うこともある。
ユーザー毎にホームディレクトリにインストールするのもなんだかなーと思ったので、全ユーザー用にシステムワイドにasdfを使う方法を考えてみた。
確認のために用意した環境
Debian 12を最小セットアップしたマシン
asdfを全ユーザー用にインストール
- 必要なパッケージを追加
$ sudo apt update $ sudo apt install curl git acl
- 同じ名前のファイルが無いことを確認。
$ ls -l /usr/local/bin/asdf ls: '/usr/local/bin/asdf' にアクセスできません: そのようなファイルやディレクトリはありません
- インストール
asdfはv0.16.0でGoで書き直されてバイナリファイルが1つだけなので、https://github.com/asdf-vm/asdf/releases から自分のOS、アーキテクチャのファイルをダウンロードして展開するだけ。
AMD64のv0.18.0の例:$ curl -OL https://github.com/asdf-vm/asdf/releases/download/v0.18.0/asdf-v0.18.0-linux-amd64.tar.gz $ sudo tar xzf ~/asdf-*.tar.gz -C /usr/local/bin $ $ asdf version v0.18.0 (revision 2114f1e)
- 設定
- asdf用の各種プラグインのインストール先ディレクトリ作成
あるグループに属するユーザーは全員読み書きしたいのでSGIDビットを立てる$ sudo mkdir -m 2775 /opt/asdf
- ここではグループをadmにするけど、もちろん新規に専用グループを作っても構わない
$ sudo chgrp adm /opt/asdf
- 新規作成されるファイルやディレクトリは、admグループが読み書きできるようにしたい
umaskでは実現できないのでACLを使う$ sudo setfacl -d -m g:adm:rwx /opt/asdf
- 全ユーザー用に環境変数をセットする
/etc/profile.d/asdf.sh を新規作成する、中身はこんな感じexport ASDF_DATA_DIR="/opt/asdf" export PATH="$ASDF_DATA_DIR/shims:$PATH"
- asdf用の各種プラグインのインストール先ディレクトリ作成
- SSHを入り直すか、
exec $SHELL -l
でシェルを読み直す
あとは公式ドキュメントのとおりに各種プラグインを入れていけばいい。asdf set HOGE latest
等でそれぞれのプラグイン毎にインストールしたバージョンを指定するのはユーザー毎に実施する。