OpenJDKインストール
ソースファイルをダウンロード
# mkdir -p /tmp/OpenJDK
# cd /tmp/OpenJDK
# wget https://github.com/openjdk/jdk23u/archive/refs/tags/jdk-23.0.1-ga.tar.gz
展開する
# tar xvf jdk-23.0.1-ga.tar.gz
# cd jdk23u-jdk-23.0.1-ga
ブートJDK
JDKを構築するには、既存のJDKが必要で、これは「ブートJDK」と呼ばれます。
JDKメジャーバージョンJDKxxを構築するためのブートJDKは、JDKxx-1のJDKである必要があります。
JDK 23を構築する場合、JDK 22がブートJDKとして適しています。
OpenJDK 22のLinux用バイナリをダウンロードします。
# wget https://download.java.net/java/GA/jdk22.0.2/c9ecb94cd31b495da20a27d4581645e8/9/GPL/openjdk-22.0.2_linux-x64_bin.tar.gz
これをブートJDKとして使うために展開します。
# mkdir -p boot-jdk
# tar xvf openjdk-22.0.2_linux-x64_bin.tar.gz -C boot-jdk
ソースコードディレクトリに移動します。
# cd jdk23u-jdk-23.0.1-ga
configure
configureします。
# ./configure \
--prefix=/usr \
--with-extra-cflags="-O2" \
--with-extra-cxxflags="-O2" \
--with-harfbuzz=bundled \
--with-zlib=bundled \
--with-giflib=system \
--with-lcms=system \
--with-libjpeg=system \
--with-libpng=system \
--enable-unlimited-crypto \
--with-boot-jdk=./boot-jdk/jdk-22.0.2
すると、以下のように出力されて、configureが成功して終わります。
A new configuration has been successfully created in
/home/takehora/Downloads/openjdk/jdk23u-jdk-23.0.1-ga/build/linux-x86_64-server-release
using configure arguments '--prefix=/usr --with-extra-cflags=-O2 --with-extra-cxxflags=-O2 --with-harfbuzz=bundled --with-zlib=bundled --with-giflib=system --with-lcms=system --with-libjpeg=system --with-libpng=system --enable-unlimited-crypto --with-boot-jdk=../boot-jdk/jdk-22.0.2'.
Configuration summary:
* Name: linux-x86_64-server-release
* Debug level: release
* HS debug level: product
* JVM variants: server
* JVM features: server: 'cds compiler1 compiler2 epsilongc g1gc jfr jni-check jvmci jvmti management parallelgc serialgc services shenandoahgc vm-structs zgc'
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
* Version string: 23.0.1-internal-adhoc.takehora.jdk23u-jdk-23.0.1-ga (23.0.1-internal)
* Source date: 1731405204 (2024-11-12T09:53:24Z)
Tools summary:
* Boot JDK: openjdk version "22.0.2" 2024-07-16 OpenJDK Runtime Environment (build 22.0.2+9-70) OpenJDK 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing) (at /home/takehora/Downloads/openjdk/boot-jdk/jdk-22.0.2)
* Toolchain: gcc (GNU Compiler Collection)
* C Compiler: Version 14.2.0 (at /usr/bin/gcc)
* C++ Compiler: Version 14.2.0 (at /usr/bin/g++)
Build performance summary:
* Build jobs: 12
* Memory limit: 64142 MB
ビルド
# make images
パッケージ作成
make installが無いため、手動でファイルをパッケージ作成用のディレクトリにコピーします。
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/lib64/java/
# cp -a build/linux*/images/jdk/* /tmp/openjdk-23.0.1-ga/usr/lib64/java/
デモ関係は必要無いので削除します。
# rm -rf /tmp/openjdk-23.0.1-ga/usr/lib64/java/demo
設定ファイルを/etcに入れて、シンボリックリンクを張ります。
# mkdir -p /tmp/openjdk-23.0.1-ga/etc
# mv /tmp/openjdk-23.0.1-ga/usr/lib64/java/conf /tmp/openjdk-23.0.1-ga/etc/openjdk
# ln -s /etc/openjdk /tmp/openjdk-23.0.1-ga/usr/lib64/java/conf
各種設定ファイルをパッケージ作成用ディレクトリの/etcに移動します。
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/logging.properties{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/net.properties{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/sound.properties{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/management/jmxremote.access{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/management/jmxremote.password.template{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/management/management.properties{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/policy/unlimited/default_local.policy{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/policy/unlimited/default_US_export.policy{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/policy/limited/default_local.policy{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/policy/limited/default_US_export.policy{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/policy/limited/exempt_local.policy{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/java.security{,.new}
# mv /tmp/openjdk-23.0.1-ga/etc/openjdk/security/java.policy{,.new}
# find /tmp/openjdk-23.0.1-ga -name "*.so" -exec strip --strip-debug {} \;
Slackwareにインストールされているca-certificatesからcacertsファイルを生成します。
OpenJDKのソース内の "cacerts" は古くなっている可能性があります
これには p11-kit の 'trust' プログラムが必要です。
# rm -f /tmp/openjdk-23.0.1-ga/usr/lib64/java/lib/security/cacerts
# trust extract --format=java-cacerts --filter=ca-anchors --purpose=server-auth /tmp/openjdk-23.0.1-ga/usr/lib64/java/lib/security/cacerts
javaというコマンドで動くようにシンボリックリンクを張ります。
# ln -sf java /tmp/openjdk-23.0.1-ga/usr/lib64/java/
プロファイルスクリプトを追加します。 openjdk.shとopenjdk.cshを作成します。
# mkdir -p /tmp/openjdk-23.0.1-ga/etc/profile.d
# cat <<EOF > /tmp/openjdk-23.0.1-ga/etc/profile.d/openjdk.sh
export JAVA_HOME=/usr/lib64/java
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
# cat <<EOF > /tmp/openjdk-23.0.1-ga/etc/profile.d/openjdk.csh
setenv JAVA_HOME /usr/lib64/java
setenv PATH \${PATH}:\${JAVA_HOME}/bin
EOF
作成したスクリプトに実行権限を与えます。
# chmod 755 /tmp/openjdk-23.0.1-ga/etc/profile.d/openjdk.sh
# chmod 755 /tmp/openjdk-23.0.1-ga/etc/profile.d/openjdk.csh
メニューエントリとアイコンをパッケージに追加します。
ディレクトリを作成
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/16x16/apps/
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/24x24/apps/
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/32x32/apps/
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/48x48/apps/
デスクトップ用アイコンの各種サイズをパッケージ作成ディレクトリにコピーしておきます。
# cp src/java.desktop/unix/classes/sun/awt/X11/java-icon16.png /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/16x16/apps/openjdk23.png
# cp src/java.desktop/unix/classes/sun/awt/X11/java-icon24.png /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/24x24/apps/openjdk23.png
# cp src/java.desktop/unix/classes/sun/awt/X11/java-icon32.png /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/32x32/apps/openjdk23.png
# cp src/java.desktop/unix/classes/sun/awt/X11/java-icon48.png /tmp/openjdk-23.0.1-ga/usr/share/icons/hicolor/48x48/apps/openjdk23.png
デスクトップファイルを追加します。
ディレクトリを作成
# mkdir -p /tmp/openjdk-23.0.1-ga/usr/share/applications
デスクトップファイルを作成します。
# vi /tmp/openjdk-23.0.1-ga/usr/share/applications/openjdk23-java.desktop
以下の内容を記述
[Desktop Entry]
Version=1.0
Name=OpenJDK Java
Comment=Run Java applications
Exec=/usr/lib64/java/bin/java %U
Terminal=false
Type=Application
Icon=openjdk23
Categories=Development;IDE;
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
manのページをパッケージ作成のディレクトリに移動し、そこに対するシンボリックリンクを張ります。
openjdk22-23.0.1には日本語のja_manはありません。
# mv /tmp/openjdk-23.0.1-ga/usr/lib64/java/man /tmp/openjdk-23.0.1-ga/usr
# ln -s /usr/man /tmp/openjdk-23.0.1-ga/usr/lib64/java/
パッケージ作成
パッケージを作成します。
# cd /tmp/openjdk-23.0.1-ga
# makepkg --linkadd y --chown y ../openjdk-23.0.1-ga-x86_64-1.txz
------------------
Slackware package ../openjdk-23.0.1-ga-x86_64-1.txz created.
このパッケージのパーミッションを755に変更して、パッケージをインストール
# cd ..
# chmod 755 openjdk-23.0.1-ga-x86_64-1.txz
# installpkg openjdk-23.0.1-ga-x86_64-1.txz
インストールした直後は、javaのコマンドはパスが通っていないため、/etc/profile.d/openjdk.sh を実行して下さい。
もしくは、システムを再起動すれば、そのファイルが自動で読み込まれるので、javaのコマンドがパスに登録されます。
