カテゴリー
Linux

【CentOS7】SDKMAN! をシステムワイド (全ユーザが使えるよう) にインストールする方法

root ユーザで SDKMAN! を使ってインストールした Java や Grails を、他のユーザ使用できるのならシステムワイドにインストールする必要はない。

そのように考え試してみましたところ、ダメ!

具体的には root ユーザで Java をインストールして、別ユーザで java コマンド確認したら無いって言われてしまいました。

  • 全ユーザが sdk コマンドで SDK をインストール等できる。
  • 全ユーザが sdk コマンドで使用可能にした Java 等を利用できる。

という環境を作成してみました。

まずは従来の普通の方法を見た後、システムワイドに SDKMAN! をインストールする方法書いていきます。

普通の SDKMAN! インストール方法

# インストール
curl -s "https://get.sdkman.io" | bash
# コマンドを即時使えるように設定
source "$HOME/.sdkman/bin/sdkman-init.sh"
# バージョンを見ることでインストール確認
sdk version

システムワイドな SDKMAN! インストール方法

  • /usr/local/sdkman にインストールする。
  • 方法自体は、公式のインストールページに書いてあるが、記述以外に必要なことを補った。
    Installation – SDKMAN!
# /usr/local/ は root ユーザの持ち物のため、root ユーザに切り替え
su -
# 場所を指定してインストール
export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
# root ユーザがコマンドを即時使えるように設定
source "/usr/local/sdkman/bin/sdkman-init.sh"
# バージョンを見ることでインストール確認
sdk version

# 全ユーザが使用できるようにフルアクセス権を付与
chmod -R 777 /usr/local/sdkman
# 全ユーザが sdk コマンドを使えるように設定
cat > /etc/profile.d/sdkman.sh <<'EOF'
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/usr/local/sdkman"
[[ -s "/usr/local/sdkman/bin/sdkman-init.sh" ]] && source "/usr/local/sdkman/bin/sdkman-init.sh"
EOF

注意点としては、インストールを実行したユーザの ~/.bashrc に SDKMAN! の設定が記述されてしまうことが挙げられます。

おわりに

すべての Linux ユーザがシステムワイドに SDKMAN! を利用できるようにしたのは、Vagrant を使った開発を楽にしたかったからでした。

本番環境では、もっと制限をかけた方がよいかと思います。

以上です。

コメントを残す