なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

OracleJDKはyumで管理できないって?さあどうする。

2つのJDK

しばらく開発界隈、Java界隈から離れていたら、いつの間にかSun/OracleJDKとOpenJDKという二大政党制みたいな状態になっていて、しかもLinuxはデフォでOpenJDKをいれてるじゃありませんか。

で、たまたまLinuxJava使う話があって、実験機として構築したLinuxに無意識にインストールしてたOpenJDKをつかっていたんだけど、明示的にOracleJDKを使う要件があって、OpenJDKと同じ調子でyumでいいやと甘く見ててファッ!ってなりました。


ずっと関わってきた人からすれば、「こんなネタ、今更すぎるわ」って話なんでしょうけど。


OracleJDKはWebサイトから入手

Linux用として配布されるファイルはrpmとtar.gzとあり、入手した後はコマンドラインで処理できるわけですが、問題はその入手方法。


公式には、ダウンロードサイトにアクセスして、対象バージョン選択して、ライセンス許諾して、それから対象ファイルを選択してダウンロード。
この「ライセンス許諾」が曲者で、画面上のラジオボタンを選択肢ないとダウンロードが有効にならないよう、Web画面を制御しています。


というわけで、yumリポジトリが公開されていたりはしないです。


最新版以外は、保管先が違う

古いリリースは、原則としてパブリックサイトからはダウンロードできません。
アーカイブサイトの方にzip形式で置いてある模様(配布するファイルタイプまでは細かく調べてない)


また、Oracle製品全般に言えますが、細かいバグ修正版はサポート契約者にしか提供されず、その入手はサポートサイトからになります。



yumがダメでも、コマンドラインで処理させてくれたっていいじゃない。

ってことで、ハックする人はいるんですね。
oracleのjdkをwgetで落としてくる - かれ4

wgetに幾つかパラメータを渡してあげて、webページ上のライセンス許諾や認証をスルーして取りに行く方法が、制限付きながら存在しています。

現時点で公開されている最新版、「Java SE Development Kit 8u65 build 17」ならば

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm

でダウンロードできます。


ダウンロード可能な対象は「パブリックサイトで公開している/していたもの(のうち、Oracle社が消さずに残してくれているもの)」です。
最新じゃなくても、過去にパブリックサイトで「現時点での最新版です(キリッ」って公開していたことがあるものは、どうやらリンクを切ってあるだけで、ファイル自体は残してあるようなのです。


なので、現在は公開ダウンロードを終了しているJava7についても、以下のように取得できます。
現時点で確認できる公開版最終アップデート「Java SE Development Kit 7u80 build 15」が、以下のようにして取得できます。

wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-linux-x64.rpm"

各バージョンの古いアップデートや、Java6以前については、試していません。

注意点

「ビルド番号」が必要

wgetでURL直指定をする際に、ビルド番号が必要です。
ビルド番号はリリースに書いてあります。
ってことは、古いバージョンのリリースノートまで公開されてないだろうから、一度ダウンロード必要?

あくまで公開ダウンロード対象だったバージョン、アップデート、ビルドだけ対応

バージョン、アップデートまで同じでも、ビルド違いでパッチを出していることがあります。(主にサポート契約者向け限定のバグフィックス

手元で動いている環境をそのまま再現するchefとか用意しようとか思っても、対象外かもしれません。

いつ塞がれるかはわかりません

なにせ非公式のやりかたですから。

追記:2017/9/23
やはり塞がれてしまったようですね。5月末には被害報告が上がっているようです。
Oracleアカウント認証」が必須となってしまったようで。
ChefやAnsibleといった自動構成ツールを使っている界隈に被害が多いようですね。

未だこの認証の回避方法は提供されていないようで、これを機にOracleJDKを手放してOpenJDKに移る人もいるみたいです。

自動化における当面の回避策としては、特定バージョンのものを手動で取得してどこかのサーバーに保存しておき、自動取得スクリプトの取得先をそちらに向けるなどが考えられます。


dev.classmethod.jp


さて

公式通りにダウンロードしてインストールするのと、どっちがラクなんでしょうね。

また、OpenJDKじゃだめなのか?ってところにも立ち戻ってもいいかもしれませんね。
OpenJDKを知らなくてJavaといえばSun、Sunが買収されたからOracle、ってだけで要件投げてきているだけで、その対応に労力使うとしたら悲劇。



オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8

オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8

オラクル認定資格教科書 Javaプログラマ Silver SE 7

オラクル認定資格教科書 Javaプログラマ Silver SE 7