🗂
SDKMAN のインストールとアンインストール手順
検証環境の準備
Ubuntu の Docker コンテナで手順を検証する。
まず Ubuntu の Docker コンテナを作成してログインする。
docker run -it --rm ubuntu:latest bash
(以降、コンテナ内での作業)
SDKMAN のインストールと検証に必要なパッケージをインストールする。
apt-get update
# SDKMAN のインストールに必要なパッケージをインストール
apt-get install -y \
unzip \
zip \
curl
# アンインストールの時に必要になるパッケージをインストール
apt-get install -y vim
これで検証環境が整う。
SDKMAN のインストール
SDKMAN のサイト ( https://sdkman.io/install ) に書いてある通りインストール。
curl -s "https://get.sdkman.io" | bash
# デフォルトでは $HOME/.sdkman にインストールされる
# インストール先を変更したい場合は、以下のように SDKMAN_DIR を設定した上でインストールする
# export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
SDKMAN の初期化スクリプトを読み込むことで SDKMAN が有効になる。
source "$HOME/.sdkman/bin/sdkman-init.sh"
# SDKMAN_DIR を設定した場合は以下のコマンド
# source "$SDKMAN_DIR/bin/sdkman-init.sh"
SDKMAN のバージョンが確認できるようになっていれば OK!
sdk version
SDKMAN の動作確認
動作確認として Java、Kotlin をインストールする。
# インストール可能な Java 一覧
sdk list java
# AdoptOpenJDK 15 をインストールする
sdk i java 15.0.2.j9-adpt
# Java のインストール確認
java -version
# 再ログインしたら JAVA_HOME が設定される
exec $SHELL -l
echo $JAVA_HOME
# インストール可能な Kotlin 一覧
sdk list kotlin
# Kotlin 1.4.30 をインストールする
sdk i kotlin 1.4.30
# Kotlin のインストール確認
kotlin -version
SDKMAN のアンインストール
SDKMAN 関連のパスを PATH から除去
echo $PATH
すると、SDKMAN 関連のパスが通されていることが分かる。
(SDKMAN 関連のパスは $SDKMAN_DIR/candidates/<ライブラリ名>/current/bin
の形式)
SDKMAN 関連のパスは明示的に除去しない限り残り続けるため、手動で PATH を更新する。
※ PATH を更新する前に元の値を控えておくと復元できる
# SDKMAN でインストールしたライブラリを把握する
sdk current
# インストールしたライブラリの数だけ sed -e "s,$SDKMAN_DIR/candidates/<ライブラリ名>/current/bin:,," でパスを除去する
# 今回のケースでは java と kotlin が対象
# sed のデリミタはスラッシュ以外でも OK
# スラッシュ以外の文字をデリミタにすればスラッシュをエスケープする必要がなくて楽
export PATH=$(echo $PATH | sed \
-e "s,$SDKMAN_DIR/candidates/java/current/bin:,," \
-e "s,$SDKMAN_DIR/candidates/kotlin/current/bin:,,"
)
sdkman-init.sh を呼び出さないようにする
~/.bashrc
と ~/.zshrc
から以下のような記述を除去する。
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/root/.sdkman"
[[ -s "/root/.sdkman/bin/sdkman-init.sh" ]] && source "/root/.sdkman/bin/sdkman-init.sh"
※ デフォルトシェルが bash または zsh でも 2ファイルとも記述を除去すること。
インストールスクリプト を見ると、デフォルトシェルに関わらず 2ファイルとも初期化処理の記述を追加していることが分かる。
SDKMAN がインストールされているディレクトリを削除
SDKMAN が有効になっている環境では $SDKMAN_DIR
が設定されているので、以下のコマンドで SDKMAN 関連のファイルを削除できる。
rm -rf $SDKMAN_DIR
環境変数を削除
# SDKMAN が設定した XXX_HOME 系の環境変数を表示する
export -p | grep -i _HOME
# Java と Kotlin をインストールした場合は JAVA_HOME と KOTLIN_HOME を削除
export -n JAVA_HOME
export -n KOTLIN_HOME
# SDKMAN 関連の環境変数を表示する
export -p | grep -i SDKMAN
# SDKMAN 関連の環境変数を削除する
export -n \
SDKMAN_CANDIDATES_API \
SDKMAN_CANDIDATES_DIR \
SDKMAN_DIR SDKMAN_PLATFORM \
SDKMAN_VERSION \
binary_input \
zip_output
アンインストール後の動作確認
# ログインし直す
exec $SHELL -l
# PATH に SDKMAN 関連のパスが含まれていないこと
echo $PATH
# JAVA_HOME が設定されていないこと
echo $JAVA_HOME
# SDKMAN 関連の環境変数が残っていないこと
export -p | grep -i SDKMAN
# 以下のコマンドが無効であること
sdk
java
kotlin
Discussion