とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

SDKMANのバージョン管理について調べてみた

前回の記事でも説明したように、SDKMANはJava自身やJavaベースのSDKのパッケージ管理ツールです。

sdkman.io

私は普段Macのソフトウェア管理にHomebrewを使っており、Homebrewでも対象となるソフトウェアのパッケージ管理はできるのですが、 特定のバージョンのJavaが必要なものの、Homebrewではそのバージョンの利用が厳しかったため、一部についてはHomebrewからこちらに変えました。 その辺は前の記事で書いています。

devops-blog.virtualtech.jp

そういえば前の記事では概要やインストール方法までしか書いていなかったのを思い出したため、日頃のメンテナンスはどうするのだろうと思い、調べてみました。

SDKMANのアップグレード

SDKMAN自身のアップデートも定期的に必要ですよね。そんな場合もコマンド一個で済むので簡単でした。

% sdk selfupdate
Updating SDKMAN...
Installing script cli archive...
* Downloading...
######################################################################## 100.0%
* Checking archive integrity...
* Extracting archive...
* Copying archive contents...
* Cleaning up...

Installing native cli archive...
* Downloading...
######################################################################## 100.0%
* Checking archive integrity...
* Extracting archive...
* Copying archive contents...
* Cleaning up...

Updating platform file...
Updating config file...

sdkman_auto_answer=false
sdkman_insecure_ssl=false
sdkman_curl_connect_timeout=7
sdkman_curl_max_time=10
sdkman_beta_channel=false
sdkman_debug_mode=false
sdkman_colour_enable=true
sdkman_auto_env=false
sdkman_checksum_enable=true
sdkman_native_enable=true
sdkman_selfupdate_feature=true
sdkman_auto_complete=true

Creating config file backup...
Successfully upgraded SDKMAN!
Open a new terminal to start using SDKMAN 5.19.0.

To join our BETA channel, simply follow the instructions on:
   http://sdkman.io/install

Enjoy!!!

SDKMAN! でインストールしたSDKの更新

sdk updateというコマンドがあったのでそれかなと思ったら違うようで、これはリポジトリーの情報を更新するコマンドでした。 Ubuntuのapt updateとかaptの-Uオプションみたいな感じでしょうか。

インストールできるバージョンの確認とインストール

インストールして切り替えるみたいな感じでSDKのアップデートをする感じみたいです。 インストールして動作確認して入らなければ古いSDKバージョンを削除といった運用です。

% sdk update
% sdk list java | grep tem   
 Temurin       |     | 24.0.1       | tem     |            | 24.0.1-tem          
               |     | 24           | tem     |            | 24-tem              
               |     | 23.0.2       | tem     |            | 23.0.2-tem          
               |     | 21.0.7       | tem     |            | 21.0.7-tem          
               |     | 21.0.6       | tem     |            | 21.0.6-tem          
               |     | 17.0.15      | tem     |            | 17.0.15-tem         
               | >>> | 17.0.14      | tem     | installed  | 17.0.14-tem         
               |     | 11.0.27      | tem     |            | 11.0.27-tem         
               |     | 11.0.26      | tem     |            | 11.0.26-tem         
               |     | 8.0.452      | tem     |            | 8.0.452-tem         
               |     | 8.0.442      | tem     |            | 8.0.442-tem

% sdk install java 17.0.15-tem
-e -n \033[1;33mDo you want java 17.0.15-tem to be set as default? (Y/n): \033[0m n  //相変わらず文字化けしている..とりあえずn

現在のバージョンの確認

インストールの最後で切り替えないを選択した場合は古いバージョンのままです。

% javac --version
javac 17.0.14
% java --version
openjdk 17.0.14 2025-01-21
OpenJDK Runtime Environment Temurin-17.0.14+7 (build 17.0.14+7)
OpenJDK 64-Bit Server VM Temurin-17.0.14+7 (build 17.0.14+7, mixed mode)

新しいバージョンに切り替え

sdk useでSDKのバージョンを切り替えます。直感的!

% sdk use java 17.0.15-tem
-e \033[1;32mUsing java version 17.0.15-tem in this shell.\033[0m

切り替わったことを確認

ちゃんと切り替わりましたね。

% javac --version
javac 17.0.15
% java --version
openjdk 17.0.15 2025-04-15
OpenJDK Runtime Environment Temurin-17.0.15+6 (build 17.0.15+6)
OpenJDK 64-Bit Server VM Temurin-17.0.15+6 (build 17.0.15+6, mixed mode)

(新しいバージョンでアプリのテストを行う、ビルドできるか、実行できるかなどを確認)

新しいバージョンをデフォルトにする

新しいバージョンをデフォルトに設定します。そのまんまのコマンドです。

% sdk default java 17.0.15-tem
setting java 17.0.15-tem as the default version for all shells.

古いバージョンが不要なら消す

必要に応じて、古いバージョンを消します。

どうしても新しいバージョンで動かない場合は古いバージョンに切り替えて実行し、新しいプロジェクトはできるだけ新しいバージョンで開発なんてことが簡単にできるようです。

% sdk uninstall java 17.0.14-tem

すごいラクでいいですね。