LoginSignup
12
11

More than 3 years have passed since last update.

Ubuntu 20.04 に asdf をシステムワイドにインストールする

Last updated at Posted at 2020-12-06

はじめに

Ubuntu 20.04 LTS (WSL2) に asdf をシステムワイドにインストールします。
asdf は anyenv に似ており、Python や Node.js など複数の環境を一貫したコマンドで導入できます。
asdf で導入可能な環境はこちら

前提

  • OS: Ubuntu 20.04 LTS (WSL2)
  • Shell: Bash

インストール

基本的に 通常の手順 に沿って進めます。

1. curl とgit のインストール

sudo apt install -y curl git

2. GitHub から asdf (v0.8.0) のクローン

今回は /usr/local 直下に置きます。

sudo git clone https://github.com/asdf-vm/asdf.git /usr/local/asdf --branch v0.8.0

3. 管理グループの設定

管理者権限がなくても asdf を利用できるように管理グループ asdf を作成し、/usr/local/asdf の操作権限1を付与します。
その後、管理グループに実行ユーザ (foo) を追加します。

sudo groupadd asdf
sudo chgrp -R asdf /usr/local/asdf
sudo chmod -R g+rwXs /usr/local/asdf
sudo gpasswd -a foo asdf

再ログインまたは exec bash -l で設定を反映します。

4. 環境変数の設定

通常は ~/.bashrc. $HOME/.asdf/asdf.sh を追加する箇所になります。
今回は /etc/profile.d/asdf.sh に必要な環境変数等を書いています。

sudo vi /etc/profile.d/asdf.sh
/etc/profile.d/asdf.sh
export ASDF_DIR=/usr/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"

再ログインまたは source /etc/profile.d/asdf.sh で設定を反映します。

5. 動作の確認

asdf --version
結果
v0.8.0-c6145d0

バージョン情報が出力されればインストール完了です。
asdf で任意の環境をインストールしていきましょう。

Tips

sudoで実施すると sudo: asdf: command not found になる可能性があります。
その場合は、sudo の i オプションを利用します。

sudo -i asdf --version

または、以下の環境変数を引き継ぐことでも実行可能です。
(個人的には sudo -i の利用を推奨したいですが。)

  • PATH
  • ASDF_DIR
  • ASDF_DATA_DIR
sudo visudo
/etc/sudoers
Defaults exempt_group = "asdf"
Defaults env_keep += "ASDF_DIR ASDF_DATA_DIR"

おわりに

asdf をシステムワイドにインストールする記事がありそうでなかったので書いてみました。
asdf 自体は最近知ったのですが、導入可能な環境の種類が多いので重宝するかもしれないです。

参考文献


  1. 一部のファイル (asdf/lib/commands/以下のファイル) に実行権限を付与すると、asdf_version: command not found 等のエラーが発生する可能性があるため、g+rwXs にしています。 

12
11
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
12
11