web-dev-qa-db-ja.com

OpenJDK 10がopenjdk-11- *としてパッケージされているのはなぜですか?

ソースからOpenJDKをコンパイルする際、最新の一般提供バージョン( OpenJDK 10.0.1 )はOpenJDK 9または10を要求します。ただし、JDK 11は 9月までリリースされません2018

しかし、驚いたことに、apt search openjdkを実行すると、結果は次のようになります。

...
openjdk-11-jdk - OpenJDK Development Kit (JDK)
...
openjdk-8-jdk - OpenJDK Development Kit (JDK)
...

OpenJDK 9または10はありません!

待ってください、それはOpenJDK 11ですか?たぶんベータリリース?いや...

だから私はapt show openjdk-11-jdkを見ました:

Package: openjdk-11-jdk
Version: 10.0.1+10-3ubuntu1
...

OpenJDK 10がopenjdk-11- *?としてパッケージ化されているのはなぜですか?

69
tudor

これは、それらのパッケージがリリースされるとOpenJDK 11になるためです。 このメーリングリストの投稿 を参照してください:

Ubuntu Foundationsチームを代表して、OpenJDKのSRU例外をリクエストしています。私たちの計画は、OpenJDK 10をデフォルトのJRE/JDK 1 Bionicとしてリリースし、メインのデフォルトのJRE/JDKを2018年9月/ 10月にSRUとしてOpenJDK 11に移動することです。

=提案された計画=

BionicはOpenJDK 10とともにデフォルトのJRE/JDKとしてリリースされ、OpenJDK 11はGAに到達すると置き換えられます。

...

リリース後、bionicでOpenJDK 11に切り替える場合、リリース時にBionicでOpenJDK 8をデフォルトのJRE/JDKとして使用しないようにする必要があります。8と11の間に存在する追加のインターフェイスデルタはアーカイブを破損にさらすだけでなく、また、JDKの外部コンシューマーが破損にさらされます。それに比べて、OpenJDK 10とOpenJDK 11の間のインターフェースデルタは、特にすでにわかっているOpenJDK 8とOpenJDK 9の間のデルタと比較して、かなり小さいと予想されます。したがって、18.04でOpenJDK 10をデフォルトJDKとしてリリースし、リリースされるとOpenJDK 11に移行する必要があります。

openjdk-11-*のソースパッケージが実際に openjdk-lts と呼ばれる理由でもあります。


バグレポート が提出されました-購読してください(ただし、追加する新しい情報がない限りコメントしないでください)。 Ubuntu開発者のJeremy Bichaが応答しました:

その目的は、Ubuntu 18.04 LTSでopenjdk-11を11にアップグレードすることです。それがそのように命名された理由です。これは大きな変更であり、準備に時間がかかります。それが行われるので、それが行われることを要求する必要はありません。

Ubuntu 18.04 LTSはOpenJDK 11がリリースされる数ヶ月前にリリースされたため、Ubuntu 18.04 LTSがリリースされる前にOpenJDK 11を提供することはできませんでした。

https://lists.ubuntu.com/archives/ubuntu-release/2018-March/004364.html

ご不便おかけしてすみません。

2018-11-24:ETAを要求しないでください。これは、このバグを購読している全員に電子メールを送信しますが、バグの修正には役立ちません。

このバグは現在修正中です。 openjdk 11.0.1は18.10に更新され、18.04 LTSで迅速に処理する必要があるセキュリティ更新がありました。 11.0.1は、準備ができたら18.04 LTSになりますが、注意深い調整が必要な大きな変更です。

2019-02-26:このバグはバグ1814133で既に処理されているため、重複としてマークしています。ここではなく、そのバグについてさらに議論する必要があります。


新しいバグレポート が行われる必要があるすべての変更を追跡するために開かれ、それらのlotがあります-大まかな140カウント。バグレポートからの抜粋:

この移行は、openjdk-10からopenjdk-11へのopenjdk-ltsのセキュリティ更新です。これにより、ランタイムとFTBFSの問題が発生し、複数のパッケージのバックポートもセキュリティポケットに入れる必要があります。

パッケージは https://launchpad.net/~openjdk-11-transition チームの下のPPAでビルドされています。 PPAはセキュリティポケットのみに依存し、段階的に分離されています。

財団とセキュリティチームの間で合意されたプロセスは、PPAのパッケージをbionic-proposedにバイナリコピーし、移行の問題をチェックし、保留中の問題がない-bionic-securityにコピーすることです。

[...]

いくつかのパッケージもCosmicで更新する必要があるかもしれませんが、例外としてBionic移行が完了した後に行われます。

また、別のUbuntu開発者 TiagoStürmerDaitx氏

[我々]は、この移行の影響を受けるJavaアプリを更新する予定です。

具体的には、openjdk-11で正しく実行できないパッケージが調査され、更新の候補となります。この更新は、必ずしも最新バージョンを使用することを意味するものではありません。単にopenjdk-11で動作するように変更を適用またはバックポートするだけです。

現時点ではまだETAはありません。かなりの数のパッケージが更新され、移行チームによって維持されているさまざまなPPAに追加されているので、テストを支援したい場合はチェックアウトしてください。


2019年4月17日更新:

修正がリリースされたようです。これで、apt show openjdk-11-jdkが表示されます。

Package: openjdk-11-jdk
Version: 11.0.2+9-3ubuntu1~18.04.3

Java -versionの出力は次のとおりです。

openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)
62
muru

上記のmuruの回答をご覧ください。

ただし、回避策として、openjdk 11を手動でインストールし、update-alternativesに追加してバージョンを切り替えることができます。公式パッケージが更新されたら、それに切り替えることができます。以下を参照して方法を確認してください。

$ wget https://download.Java.net/Java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz

$ Sudo tar xfvz /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz --directory /usr/lib/jvm

/usr/lib/jvm/jdk-11.0.2の下にjdkを展開します

次に、代替システムに追加します

Sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'

Sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --set $(basename $bin) $bin; done'

代替案でそれを参照してください

$ Sudo update-alternatives --config Java
There are 3 choices for the alternative Java (providing /usr/bin/Java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/Java-11-openjdk-AMD64/bin/Java      1101      auto mode
  1            /usr/lib/jvm/Java-11-openjdk-AMD64/bin/Java      1101      manual mode
  2            /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java   1081      manual mode
* 3            /usr/lib/jvm/jdk-11.0.2/bin/Java                 100       manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

動作確認

$ Java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
5
Karl