OpenJDK 安装及使用
OpenJDK 是 Java 的开发环境(JDK)的开源版本,完全自由,开放源码。
本教程将介绍如何在 SonmiHPC 集群上安装 OpenJDK,并提供给集群上用户使用。
安装方式
OpenJDK 的安装方式主要有以下三种:
- 直接使用 YUM/DNF 等包管理器下载安装到全局;
- 直接下载官方编译好的二进制可执行文件压缩包;
- 从源码编译安装。
下面将分别介绍这三种安装方法。
1. 使用 YUM/DNF 包管理器安装
该方法需要有集群的管理员权限,并且该方式只能在集群单台节点上单独进行安装,也只能安装仓库中固定的版本,目前是 1.8.0 版本,因此不推荐。使用管理员账号执行下面命令安装即可:
shell
dnf install -y java-1.8.0-openjdk
dnf install -y java-1.8.0-openjdk
2. 直接下载二进制可执行文件压缩包
直接从官方的发行版链接中找到需要的版本,使用 wget 下载到集群中或者在本地下载完成后上传到集群中。下面以 OpenJDK 21为例。
执行下面命令下载压缩包,并解压缩:
shell
wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz
tar xzvf openjdk-21_linux-x64_bin.tar.gz
wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz
tar xzvf openjdk-21_linux-x64_bin.tar.gz
为方便集群上用户一起使用,创建一个共享的目录:
shell
mkdir -p /share/apps/openjdk/21
mkdir -p /share/apps/openjdk/21
把解压缩后的文件复制到新建的目录中:
shell
cp -r jdk-21/. /share/apps/openjdk/21/
cp -r jdk-21/. /share/apps/openjdk/21/
修改路径权限:
shell
chmod -R 755 /share/apps/openjdk/21/
chmod -R 755 /share/apps/openjdk/21/
为方便集群内用户使用,把 OpenJDK 以 Module 模块的方式提供给集群内其他用户使用,创建下面的文件夹,并在路径下创建一个 Modulefile 文件:
shell
mkdir -p /share/apps/modulefiles/openjdk
cd /share/apps/modulefiles/openjdk && vim 21
mkdir -p /share/apps/modulefiles/openjdk
cd /share/apps/modulefiles/openjdk && vim 21
新建文件内容如下:
tcl
#%Module###########################################
set modulefilename "OpenJDK"
set modulefilever "21"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
set JAVA_HOME /share/apps/openjdk/21/
setenv JAVA_HOME $JAVA_HOME
prepend-path PATH $JAVA_HOME/bin
prepend-path LD_LIBRARY_PATH $JAVA_HOME/lib
#%Module###########################################
set modulefilename "OpenJDK"
set modulefilever "21"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
set JAVA_HOME /share/apps/openjdk/21/
setenv JAVA_HOME $JAVA_HOME
prepend-path PATH $JAVA_HOME/bin
prepend-path LD_LIBRARY_PATH $JAVA_HOME/lib
保存文件,并设置以下权限即可:
shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles
集群上用户执行下面命令就可以加载该模块:
shell
module load openjdk/21
module load openjdk/21
3. 从源码编译安装
由于该方法比较繁琐,并且对于大部分用户来说不是必须的方式,因此不进行介绍。如果有需求可以自行查阅参考官方的构建教程。