Help us understand the problem. What is going on with this article?

[Oracle Cloud] 無償利用可能な Oracle JDK 11(LTS) を、OCIの仮想インスタンス上にInstall

More than 1 year has passed since last update.

はじめに

Oracle Cloud Infrastructure(以下OCI)で利用する際に Oracle JDK は、無償で商用利用可能となったことがアナウンスがありました。
https://blogs.oracle.com/developers/support-for-oracle-java-se-now-included-with-oracle-cloud-infrastructure

OCIにCentOSを構築し、Oracle JDK 11 をInstallする方法を記載します。Oracle JDK 11を選択した理由は以下の通りです。

  • Oracle JDK のバージョン11は、LTSの対象となっており Premier Support の期間が、2018年9月~2023年9月となっているため

留意点

CentOSがDefaultで参照しているRepositoryを無効化し、OCIで提供しているRepositoryに切り替えています。
OCIで提供しているものを継続して利用することが出来ますが、気になる場合はJDKをInstallした後にもとに戻してください。

Oracle JDKをInstall

OCI で Compute Instance を構築

CentOS7 で適当に立てる。以下のチュートリアルなどを参照
https://community.oracle.com/docs/DOC-1019313

Yum Repository参照先を変更

まず、rootへスイッチします

sudo su -

ULN(Unbreakable Linux Network) に接続するために GPG KEY をダウンロードします

wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

GPG KEY を適用します

# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
pub  2048R/EC551F03 2010-07-01 Oracle OSS group (Open Source Software group) <build@oss.oracle.com>
      Key fingerprint = 4214 4123 FECF C55B 9086  313D 72F9 7B74 EC55 1F03

CentOSのDefaule 参照先を 無効化します

mkdir /etc/yum.repos.d/old
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/old

ULN側の Repository を参照するための、一時的なファイルを作成します。

cat <<'EOF' > /etc/yum.repos.d/ol7-temp.repo
[ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
EOF

yum repolist で正常に参照できているか確認します

# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
repo id                    repo name                                 status
ol7_latest/x86_64          Oracle Linux 7Server Latest (x86_64)      13,163
repolist: 13,163

repositoryを参照するためのパッケージをインストールします

yum install -y oraclelinux-release-el7

以下のパッケージがインストールされます

Dependencies Resolved

==============================================================================================================
Package                           Arch             Version                        Repository            Size
==============================================================================================================
Installing:
 oraclelinux-release-el7           x86_64           1.0-6.el7                      ol7_latest            18 k
Installing for dependencies:
 python-kitchen                    noarch           1.1.1-5.el7                    ol7_latest           265 k
 yum-utils                         noarch           1.1.31-50.0.1.el7              ol7_latest           121 k

Transaction Summary
==============================================================================================================

yum.repo.d ディレクトリは以下の構成になっています

# ls -la 
total 28 
drwxr-xr-x.  3 root root  108 Jul 16 16:01 .
drwxr-xr-x. 90 root root 8192 Jul 16 13:10 ..
-rw-r--r--.  1 root root  203 Jul 16 16:01 ol7-temp.repo
drwxr-xr-x.  2 root root  229 Jul 16 16:01 old
-rw-r--r--.  1 root root 3586 Jul 16 16:01 oracle-linux-ol7.repo
-rw-r--r--.  1 root root 2108 Jul 16 16:01 uek-ol7.repo
-rw-r--r--.  1 root root  225 Jul 16 16:01 virt-ol7.repo

一時的に作成したRepositoryを無効化します

mv /etc/yum.repos.d/ol7-temp.repo /etc/yum.repos.d/old/

OCI の各Regionには、高速にパッケージをダウンロードするための、yum ミラーサーバーが存在しています。
これにアクセスするために、以下の設定を行います。
まず JSON を 整形するための、jqコマンドをインストールします

sudo curl -o /usr/local/bin/jq -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && sudo chmod +x /usr/local/bin/jq

Compute Instance が稼働しているRegion名を取得して、/etc/yum/vars/ociregion に格納します。

export OCIREGION=`curl -sfm 3 http://169.254.169.254/opc/v1/instance/ | jq -r '.region' | cut -d '-' -f 2`
echo "-$OCIREGION" > /etc/yum/vars/ociregion

ファイルの中身を確認します

# cat /etc/yum/vars/ociregion 
-tokyo 

yum repolist を確認します。以下の5種類のRepositoryを参照することが出来ていればOKです。

# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
repo id                    repo name                                                                    status
ol7_UEKR5/x86_64           Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86    154
ol7_addons/x86_64          Oracle Linux 7Server Add ons (x86_64)                                           340
ol7_latest/x86_64          Oracle Linux 7Server Latest (x86_64)                                         13,163
ol7_ociyum_config          OCI specific release packages Oracle Linux 7Server (x86_64)                      27
ol7_optional_latest/x86_64 Oracle Linux 7Server Optional Latest (x86_64)                                 9,978
repolist: 23,662

正常にInstall出来るか確認するために、vimを試しにインストールしてみます

yum install -y vim

以下の依存関係が解決されて、正常にインストールを行うことが出来ます。

==============================================================================================================
Package                          Arch             Version                         Repository            Size
==============================================================================================================
Installing:
 vim-enhanced                     x86_64           2:7.4.160-6.el7_6               ol7_latest           1.0 M
Installing for dependencies:
 gpm-libs                         x86_64           1.20.7-5.el7                    ol7_latest            31 k
 perl                             x86_64           4:5.16.3-294.el7_6              ol7_latest           8.0 M
 perl-Carp                        noarch           1.26-244.el7                    ol7_latest            19 k
 perl-Encode                      x86_64           2.51-7.el7                      ol7_latest           1.5 M
 perl-Exporter                    noarch           5.68-3.el7                      ol7_latest            28 k
 perl-File-Path                   noarch           2.09-2.el7                      ol7_latest            26 k
 perl-File-Temp                   noarch           0.23.01-3.el7                   ol7_latest            56 k
 perl-Filter                      x86_64           1.49-3.el7                      ol7_latest            76 k
 perl-Getopt-Long                 noarch           2.40-3.el7                      ol7_latest            55 k
 perl-HTTP-Tiny                   noarch           0.033-3.el7                     ol7_latest            38 k
 perl-PathTools                   x86_64           3.40-5.el7                      ol7_latest            82 k
 perl-Pod-Escapes                 noarch           1:1.04-294.el7_6                ol7_latest            51 k
 perl-Pod-Perldoc                 noarch           3.20-4.el7                      ol7_latest            86 k
 perl-Pod-Simple                  noarch           1:3.28-4.el7                    ol7_latest           216 k
 perl-Pod-Usage                   noarch           1.63-3.el7                      ol7_latest            26 k
 perl-Scalar-List-Utils           x86_64           1.27-248.el7                    ol7_latest            35 k
 perl-Socket                      x86_64           2.010-4.el7                     ol7_latest            48 k
 perl-Storable                    x86_64           2.45-3.el7                      ol7_latest            76 k
 perl-Text-ParseWords             noarch           3.29-4.el7                      ol7_latest            13 k
 perl-Time-HiRes                  x86_64           4:1.9725-3.el7                  ol7_latest            44 k
 perl-Time-Local                  noarch           1.2300-2.el7                    ol7_latest            24 k
 perl-constant                    noarch           1.27-2.el7                      ol7_latest            18 k
 perl-libs                        x86_64           4:5.16.3-294.el7_6              ol7_latest           688 k
 perl-macros                      x86_64           4:5.16.3-294.el7_6              ol7_latest            43 k
 perl-parent                      noarch           1:0.225-244.el7                 ol7_latest            12 k
 perl-podlators                   noarch           2.5.1-3.el7                     ol7_latest           111 k
 perl-threads                     x86_64           1.87-4.el7                      ol7_latest            48 k
 perl-threads-shared              x86_64           1.43-6.el7                      ol7_latest            38 k
 vim-common                       x86_64           2:7.4.160-6.el7_6               ol7_latest           5.9 M
 vim-filesystem                   x86_64           2:7.4.160-6.el7_6               ol7_latest           9.8 k

Transaction Summary
==============================================================================================================

Oracle JDK 11 を Install

Oracle JDK のパッケージを確認します。
jdkで検索すると、Open JDK も引っ掛かりますが、下の方にOracle JDK の 11 と 12 があります。

# yum search jdk
省略
jdk-11.0.3.x86_64 : Java Platform Standard Edition Development Kit
jdk-12.0.1.x86_64 : Java Platform Standard Edition Development Kit
jdk1.8.x86_64 : Java Platform Standard Edition Development Kit
省略

Oracle JDK は、OCIだと無償で商用利用が可能となっている。そのなかで JDK 11 が LTS となっているため、JDK 11 を Install します。

yum install -y jdk-11.0.3.x86_64

java の version 確認

# java --version 
java 11.0.3 2019-04-16 LTS 
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)

参考URL

OCIのYum Repositoryを参照
https://yum.oracle.com/getting-started.html

OCIでJavaをInstall
https://orablogs-jp.blogspot.com/2019/06/how-to-install-oracle-java-in-oracle.html

sugimount
CloudNativeな色々をやっています / 投稿している内容は個人的な見解なので、所属組織とは関係ありません https://twitter.com/sugimount
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away