Warum ist OpenJDK 10 als openjdk-11- * verpackt?

70

Beim Kompilieren von OpenJDK aus dem Quellcode besteht die neueste General Availability-Version ( OpenJDK 10.0.1 ) auf OpenJDK 9 oder 10. JDK 11 wird jedoch erst im September 2018 veröffentlicht .

Zu meiner Überraschung ist apt search openjdkdas Ergebnis jedoch:

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

Kein OpenJDK 9 oder 10!

Und warte, ist das OpenJDK 11? Vielleicht eine Beta-Version? Nein ....

Also habe ich mir angeschaut apt show openjdk-11-jdk:

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

Warum wurde OpenJDK 10 als openjdk-11- * verpackt?

Tudor
quelle

Antworten:

62

Dies liegt daran, dass diese Pakete bei Veröffentlichung zu OpenJDK 11 werden. Siehe diesen Mailinglisten-Beitrag :

Im Namen des Ubuntu Foundations-Teams beantrage ich eine SRU-Ausnahme für OpenJDK. Wir planen, OpenJDK 10 als Standard-JRE / JDK 1 für Bionic freizugeben und dann das Standard-JRE / JDK main im September / Oktober 2018 als SRU auf OpenJDK 11 zu verschieben.

= Vorgeschlagener Plan =

Bionic wird mit OpenJDK 10 als Standard-JRE / JDK veröffentlicht und OpenJDK 11 wird es ersetzen, sobald es GA erreicht.

...

Wenn wir nach der Veröffentlichung auf OpenJDK 11 in Bionic umsteigen, möchten wir OpenJDK 8 als Standard-JRE / JDK in Bionic zum Zeitpunkt der Veröffentlichung vermeiden, da jedes zusätzliche Schnittstellendelta, das zwischen 8 und 11 besteht, das Archiv nicht nur einem Bruch aussetzt. es setzt auch externe Verbraucher des JDK einem Bruch aus. Im Vergleich dazu wird erwartet, dass das Schnittstellendelta zwischen OpenJDK 10 und OpenJDK 11 ziemlich klein ist, insbesondere im Vergleich zu dem Delta zwischen OpenJDK 8 und OpenJDK 9, von dem wir bereits wissen, dass es groß ist. Wir sollten daher mit OpenJDK 10 als Standard-JDK in 18.04 veröffentlichen und bei Veröffentlichung auf OpenJDK 11 übergehen.

Das ist auch der Grund, warum das Quellpaket von openjdk-11-*tatsächlich aufgerufen wird openjdk-lts.


Ein Fehlerbericht wurde eingereicht - bitte abonnieren Sie ihn (aber kommentieren Sie nicht, es sei denn, Sie müssen neue Informationen hinzufügen, was unwahrscheinlich ist). Ein Ubuntu-Entwickler, Jeremy Bicha, hat geantwortet:

In Ubuntu 18.04 LTS soll openjdk-11 auf 11 aktualisiert werden. Deshalb wurde es so benannt. Es ist eine große Veränderung und die Vorbereitung wird einige Zeit in Anspruch nehmen. Es besteht keine Notwendigkeit, darum zu bitten, da dies geschehen wird.

Ubuntu 18.04 LTS wurde einige Monate vor der Veröffentlichung von OpenJDK 11 veröffentlicht. Daher war es vor der Veröffentlichung von Ubuntu 18.04 LTS nicht möglich, OpenJDK 11 bereitzustellen.

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

Entschuldigung für die Unannehmlichkeiten.

2018-11-24: Bitte fragen Sie nicht nach einer ETA. Dies sendet eine E-Mail an alle, die diesen Fehler abonniert haben, und behebt den Fehler nicht.

Dieser Bug wird gerade bearbeitet. openjdk 11.0.1 wurde in 18.10 aktualisiert und es gab ein Sicherheitsupdate, das in 18.04 LTS schnell verarbeitet werden musste. 11.0.1 wird zu 18.04 LTS, wenn es fertig ist, aber es ist eine große Änderung, die sorgfältige Koordination erfordert.

2019-02-26: Dieser Fehler wird bereits in Fehler 1814133 behandelt, daher markiere ich ihn als Duplikat. Weitere Diskussionen sollten zu diesem Fehler statt hier stattfinden.


Ein neuer Fehlerbericht wurde geöffnet, um alle Änderungen nachzuverfolgen, die vorgenommen werden müssen, und es gibt viele davon - ungefähr 140. Auszüge aus dem Fehlerbericht:

Dieser Übergang ist ein Sicherheitsupdate von openjdk-lts von openjdk-10 auf openjdk-11. Dies führt zu Laufzeit- und FTBFS-Problemen, die auch das Zurückportieren mehrerer Pakete in die Sicherheitstasche erfordern.

Die Pakete werden auf PPAs unter dem https://launchpad.net/~openjdk-11-transition-Team erstellt . Die PPAs hängen ausschließlich von der Sicherheitstasche ab und sind stufenweise getrennt.

Der zwischen den Stiftungen und dem Sicherheitsteam vereinbarte Prozess ist, dass Pakete in den PPAs binär in Bionic-Proposal kopiert, auf Migrationsprobleme überprüft und - ohne ausstehende Probleme - in Bionic-Security kopiert werden.

[...]

Einige Pakete müssen möglicherweise auch in Cosmic aktualisiert werden, dies ist jedoch eine Ausnahme, die nach der Erarbeitung des Bionic-Übergangs erfolgt.

Und ein weiterer Ubuntu- Entwickler , Tiago Stürmer Daitx, bemerkte :

[Wir] planen, Java-Apps zu aktualisieren, die von diesem Übergang betroffen sind.

Genauer gesagt, jedes Paket, das mit openjdk-11 nicht ordnungsgemäß ausgeführt werden kann, wird untersucht und ist ein Kandidat für ein Update. Das Update bedeutet nicht unbedingt, dass wir die neueste Version verwenden werden. Möglicherweise werden Änderungen lediglich angewendet oder zurückportiert, damit sie unter openjdk-11 funktionieren.

Derzeit noch keine ETA. Es wurden einige Pakete aktualisiert und zu den verschiedenen PPAs hinzugefügt, die vom Übergangsteam verwaltet werden. Wenn Sie beim Testen helfen möchten, sollten Sie sie überprüfen.


Update 17. April 2019:

Es scheint, dass das Update veröffentlicht wurde. Jetzt apt show openjdk-11-jdkzeigt:

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

Und die Ausgabe von java -versionist:

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)
muru
quelle
6
Nur zwei Tage? Das ist eine große Verzögerung? Oo Dies ist ein Paket, das Canonical seit Jahren unterstützt. Ich bin sicher, Sie können Ihr Canonical-Abonnement verwenden, um schnellere Veröffentlichungen anzufordern.
muru
5
Die Kenntnis des Veröffentlichungsdatums verkürzt jedoch nicht die für die Qualitätssicherung erforderliche Zeit. Wenn Sie es eilig haben, wurden die PPAs aktualisiert: launchpad.net/~openjdk-r/+archive/ubuntu/ppa Ich erwarte, dass die Pakete in Kürze ihren Weg finden und von dort aus zu Updates.
Muru
10
Ich glaube, der Kommentar, aber ich kann nicht sehen, wie sie effektiv eine JDK-Version falsch klassifizieren, ist das Richtige. Es ist verwirrend und ich sage es ein wenig unehrlich. Sie müssen nur die Versionen zur Auswahl haben, und wir können unsere eigenen machen update-alternatives. Vielen Dank an @muru für Ihre Antwort
Daniel Hinojosa
10
@muru jetzt ist es fast ein Monat, noch keine große Verspätung?
9ilsdx 9rvj 0lo
14
@ 9ilsdx9rvj0lo jemand hat einen Fehlerbericht eingereicht, behalten Sie diesen im Auge: bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027
muru
5

Siehe Murus Antwort oben,

Für eine Umgehungslösung können Sie openjdk 11 manuell installieren und zu den Update-Alternativen hinzufügen, damit Sie die Version wechseln können. Wenn das offizielle Paket aktualisiert wird, können Sie dorthin wechseln. siehe unten um zu sehen wie:

$ 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

das entpackt das jdk unter /usr/lib/jvm/jdk-11.0.2

Fügen Sie es dann dem alternativen System hinzu

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'

sieh es in den Alternativen

$ 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

Überprüfen Sie, ob es funktioniert

$ 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)
Karl
quelle
Beantwortet eine andere Frage, aber da Sie sich so gut auf die Antwort von muru bezogen haben und diese nützlich ist, werde ich sie annehmen. +1 ;-) Willkommen bei AskUbuntu! :-)
Tudor
Vielen Dank, hätte ich die neue Frage stellen sollen: "Wie kann ich das
Karl,
Technisch ja. Ihre Antwort ist eine Antwort auf die Frage "Wie installiere ich die neueste (Nicht-Repository-) Version von Java?" in der Erwägung, dass meine Frage mehr die Verteilungspolitik und die daraus resultierende Verwirrung betrifft. Außerdem hätten Sie Fragen- und Antwortpunkte für diese Frage erhalten, und die Suche wäre einfacher gewesen. Dann verknüpfte diese Frage mit dieser Frage als "verwandt". :-)
Tudor
nächstes Mal :-) Prost
Karl
Eine Antwort, die so beliebt war, dass sie zu einem Devzone-Artikel wurde: dzone.com/articles/… Nein, warten Sie nicht.
Umgekehrt