CentOS、RockyLinux、RHEL、およびFedoraにJavaをインストールする方法

提供:Dev Guides
移動先:案内検索

序章

このチュートリアルでは、RPMベースのLinuxディストリビューションの現在のバージョン(Red Hat Enterprise Linux、CentOS、Fedora、およびRocky Linux)にJavaをインストールする方法を示します。 Javaは、多くのサーバー側アプリケーションを実行できるようにする人気のあるプログラミング言語およびソフトウェアプラットフォームです。

このチュートリアルでは、Javaの最新のデフォルトバージョンのインストール、インストールする古いバージョンの選択、および必要に応じて環境内の複数のバージョン間の切り替えについて説明します。

前提条件

このガイドを開始する前に、サーバーにsudo権限が設定された通常の非rootユーザーが必要です。これは、サーバーにログインするユーザーです。 Rocky Linux 8 初期サーバーセットアップガイドの手順に従って、通常のユーザーアカウントを構成する方法を学ぶことができます。

ブラウザで実行されている端末を使用してJavaをインストールする実験を行う場合は、次のLaunch an Interactive Terminal!ボタンをクリックしてください。 このチュートリアルのコマンドは、RockyLinux8環境で実行できます。

インタラクティブターミナルを起動します!

ステップ1-OpenJDKのインストール

Java Platformには、Standard Edition(SE)、Enterprise Edition(EE)、およびMicro Edition(ME)の3つの異なるエディションがあります。 このチュートリアルは、Java SE(Java Platform、Standard Edition)に焦点を当てています。 ほとんどすべてのオープンソースJavaソフトウェアは、JavaSEで実行するように設計されています。

インストールできるJavaSEパッケージには、Java Runtime Environment(JRE)とJava Development Kit(JDK)の2つがあります。 JREは、Java仮想マシン(JVM)の実装であり、コンパイルされたJavaアプリケーションおよびアプレットを実行できます。 JDKには、JREと、Javaアプリケーションおよびアプレットの作成、開発、およびコンパイルに必要なその他のソフトウェアが含まれています。

Javaには、OpenJDKとOracleJavaの2つの異なる実装もあります。 どちらの実装もほぼ同じコードに基づいていますが、Javaのリファレンス実装であるOpenJDKは完全にオープンソースであり、OracleJavaには独自のコードが含まれています。 ほとんどのJavaアプリケーションはどちらでも正常に動作しますが、ソフトウェアが要求する実装を使用する必要があります。

さまざまなバージョンとリリースのJavaを単一のシステムにインストールできますが、ほとんどの場合、必要なインストールは1つだけです。 そのことを念頭に置いて、アプリケーションを実行または開発するために必要なバージョンのJavaのみをインストールするようにしてください。

このセクションでは、yumパッケージマネージャーを使用してビルド済みのOpenJDKJREおよびJDKパッケージをインストールする方法を説明します。 yumは、RPMパッケージを使用するディストリビューションのデフォルトのパッケージマネージャーです。

yumを使用してOpenJDKをインストールするには、sudo yum install javaを実行できます。

sudo yum install java

デフォルトでは、バージョンを指定せずにjavaをインストールしようとすると、OpenJDKJREの最も一般的な安定バージョンに解決されます。 この出力からわかるように、この記事の執筆時点では、それはjava-1.8.0-openjdkです。

OutputLast metadata expiration check: 0:02:38 ago on Tue 22 Feb 2022 04:57:59 PM UTC.
Dependencies resolved.
========================================================================================
 Package                     Arch   Version                             Repo       Size
========================================================================================
Installing:
 java-1.8.0-openjdk          x86_64 1:1.8.0.322.b06-2.el8_5             appstream 341 k
Installing dependencies:
 alsa-lib                    x86_64 1.2.5-4.el8                         appstream 488 k
 atk                         x86_64 2.28.1-1.el8                        appstream 270 k
 avahi-libs                  x86_64 0.7-20.el8                          baseos     61 k
 copy-jdk-configs            noarch 4.0-2.el8                           appstream  29 k
 cups-libs                   x86_64 1:2.2.6-40.el8                      baseos    432 k
 fribidi                     x86_64 1.0.4-8.el8                         appstream  88 k
…

Javaとともに複数の依存関係も提供されます。 確認プロンプトでyと入力し、Enterキーを押してインストールを続行します。 インストール元のリポジトリの署名キーを受け入れるように求められる場合もあります。

OutputImporting GPG key 0x6D745A60:
 Userid     : "Release Engineering <[email protected]>"
 Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
Is this ok [y/N]:

yと入力し、Enterキーをもう一度押します。

これで、Javaが正常にインストールされているはずです。 これを確認するために、java -versionを実行して、ご使用の環境で現在使用可能なJavaのバージョンを確認できます。

java -version

注:ほとんどの場合、コマンドライン引数の前には、1文字の引数の場合は1つのダッシュ、フルワードの引数の場合は2つのダッシュが付きます。 Javaは、すべての引数に1つのダッシュを使用するという別の規則に従います。この場合、-versionです。


Outputopenjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

Javaの命名規則とLinuxパッケージの命名規則の間の相互作用は、多少混乱する可能性があります。 このチュートリアルの前半で、開発用の完全なJDK環境とJavaアプリケーションを実行するためのJRE環境の違いを明確にしました。 OpenJDKはJavaのオープンソースディストリビューションの名前ですが、実際にインストールしたのはOpenJDKJREだけです。 完全なOpenJDKJDK をインストールするには、名前に-develが追加された対応するパッケージをインストールする必要があります。 これは、他のプログラミング環境の開発パッケージの一般的な規則であり、Javaもこれに従いますが、ここでは用語が厄介に重複しています。

以前と同様に、java-develをインストールしてデフォルトバージョンを取得するか、java-1.8.0-openjdk-develを指定できます。

sudo yum install java-devel
OutputDigitalOcean Droplet Agent                               63 kB/s | 3.3 kB     00:00
Dependencies resolved.
========================================================================================
 Package                     Arch      Version                       Repository    Size
========================================================================================
Installing:
 java-1.8.0-openjdk-devel    x86_64    1:1.8.0.322.b06-2.el8_5       appstream    9.8 M

Transaction Summary
========================================================================================
Install  1 Package

Total download size: 9.8 M
Installed size: 41 M
Is this ok [y/N]:

このパッケージをインストールすると、特定のバージョンの非互換性がないJavaソフトウェアをコンパイルして実行できる完全なOpenJDK環境ができあがります。 次のセクションでは、他のバージョンのJavaをインストールして管理します。

ステップ2–他のOpenJDKリリースのインストール

最近、OpenJDKは、Oracle Javaリリースとより密接に追跡するために、バージョン番号付けスキームを変更しました。 新しいバージョンのOpenJDKをインストールするには、1.8.0と同様に、パッケージ名にバージョン番号を指定できます。 たとえば、OpenJDK 17をインストールするには、次のことができますyum install java-17-openjdk

sudo yum install java-17-openjdk
OutputLast metadata expiration check: 0:03:36 ago on Tue 22 Feb 2022 05:42:44 PM UTC.
Dependencies resolved.
========================================================================================
 Package                      Arch       Version                    Repository     Size
========================================================================================
Installing:
 java-17-openjdk              x86_64     1:17.0.2.0.8-4.el8_5       appstream     244 k
Installing dependencies:
 adwaita-cursor-theme         noarch     3.28.0-2.el8               appstream     646 k
 adwaita-icon-theme           noarch     3.28.0-2.el8               appstream      11 M
 at-spi2-atk                  x86_64     2.26.2-1.el8               appstream      88 k
 at-spi2-core                 x86_64     2.28.0-1.el8               appstream     168 k
 colord-libs                  x86_64     1.4.2-1.el8                appstream     234 k
 java-17-openjdk-headless     x86_64     1:17.0.2.0.8-4.el8_5       appstream      41 M
 lcms2                        x86_64     2.9-2.el8                  appstream     163 k
…

以前と同様に、パッケージ名に-develを追加することで、完全なJDK環境をインストールできます。 ただし、この後、javaプログラムを実行すると、デフォルトで以前にインストールしたOpenJDK 1.8.0バージョンが引き続き使用されます。これは、java -versionを再度実行することで確認できます。

java -version
Outputopenjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

次のステップでは、インストールされているバージョンのJavaを管理します。

ステップ3–デフォルトのJavaバージョンを設定する

複数のバージョンのJavaをインストールした場合は、1つをデフォルトとして設定することをお勧めします(つまり、 ユーザーがjavaコマンドを実行したときに実行されるもの)。 さらに、一部のアプリケーションでは、使用するJavaのインストールを見つけるために特定の環境変数を設定する必要があります。

シンボリックリンクを介してデフォルトコマンドを管理するalternativesコマンドを使用して、デフォルトのJavaバージョンを選択できます。 alternativesで管理できるJavaの使用可能なバージョンを一覧表示するには、alternatives –config javaを使用します。

sudo alternatives --config java

出力には、インストールしたJavaの両方のバージョンがリストされているはずです。

outputThere are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
   2           java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)

Enter to keep the current selection[+], or type selection number:

選択番号を入力して、デフォルトで使用するjava実行可能ファイルを選択します。 javaコマンドが正しいライブラリのセットを指すように、システム上の必要なシンボリックリンクを再配置します。 必要に応じてこのコマンドを再実行すると、java -versionの出力がそれに応じて変更されます。

java -version
Outputopenjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)

多くのJavaアプリケーションは、JAVA_HOMEまたはJRE_HOME環境変数を使用して、使用するjava実行可能ファイルを決定します。

たとえば、Javaを(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/binにインストールした場合(つまり、 java実行可能ファイルは<^>(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)にあり、JAVA_HOME環境変数をbashシェルまたはスクリプトで次のように設定できます。

export JAVA_HOME=(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre

注: JAVA_HOME環境変数では、/jreディレクトリで終わるJavaインストールへのパスを設定することをお勧めします。 この規則は変数ごとに変わる可能性があるため、変更を行うときは例を注意深く確認することをお勧めします。


システム上のすべてのユーザーにデフォルトでJAVA_HOMEを設定する場合は、前の行を/etc/environmentファイルに追加します。 次のコマンドを実行して、/etc/environmentファイルを直接編集する必要をなくすために、echoおよび>>シェルリダイレクトを使用してファイルに追加できます。

sudo sh -c "echo export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre >> /etc/environment"

次のステップでは、OpenJDKバージョンと一緒にOracle独自のJavaをインストールします。

ステップ4–OracleJavaのインストール

ガイドのこのセクションでは、この記事の執筆時点でこれらのパッケージの最新リリースであるOracle Java JREおよびJDK(64ビット)をインストールする方法を示します。

注:このページの対話型端末を使用している場合、OracleJavaをダウンロードして環境にインストールすることはできません。


このセクションでは、wgetコマンドを使用してOracleJavaソフトウェアパッケージをダウンロードします。 wgetは、Linuxディストリビューションにデフォルトで含まれていない可能性があるため、以下を実行してインストールする必要があります。

sudo yum install wget

Oracle Javaをインストールする前に、含まれている手順の1つであるJavaSEのOracleBinary CodeLicenseAgreementに同意する必要があります。


注: Oracle Javaをインストールするには、 Oracle Javaダウンロードページに移動し、ライセンス契約に同意して、適切なLinuxx86.rpmパッケージ。 wgetコマンドの強調表示された部分の代わりに、コピーしたダウンロードリンクを置き換えます。


ホームディレクトリに移動し、次のコマンドを使用してOracleJavaRPMをダウンロードします。

cd ~
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm"

次に、yum localinstallを使用してRPMをインストールします(別のリリースをダウンロードした場合は、ここでファイル名に置き換えてください)。

sudo yum localinstall jdk-17_linux-x64_bin.rpm

確認プロンプトでyと入力し、Enterキーを押してインストールを続行します。

以前にダウンロードしたアーカイブファイルを削除できます。

rm ~/jdk-17_linux-x64_bin.rpm

これで、alternativesコマンドを再実行でき、OracleJavaを使用するための3番目のオプションが表示されます。

sudo alternatives --config java
outputThere are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
 + 2           java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)
*  3           /usr/java/jdk-17.0.2/bin/java

Enter to keep the current selection[+], or type selection number:

ユースケースに応じて、利用可能なバージョンのJavaをインストールして実行するには、このチュートリアルの手順で十分です。

結論

このチュートリアルでは、yumパッケージマネージャー、alternativesコマンド、および環境変数を使用して、Javaの複数のバージョンをインストールおよび管理しました。 これらはすべてLinux環境管理の基本的な側面であり、Javaは多くの異なるバージョンがあるため、それらを操作するための特に良い例を提供します。

次に、他のコンテキストでJavaを使用する方法を学びたいと思うかもしれません。