web-dev-qa-db-fra.com

Pourquoi OpenJDK 10 est-il présenté sous le nom openjdk-11- *?

Tout en cherchant à compiler OpenJDK à partir des sources, la dernière version à disponibilité générale ( OpenJDK 10.0.1 ) insiste sur OpenJDK 9 ou 10. JDK 11 ne doit toutefois pas être publié avant le septembre). 2018 .

Cependant, à ma grande surprise, lorsque je fais apt search openjdk, le résultat est le suivant:

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

Pas d'OpenJDK 9 ou 10!

Et attendez, est-ce OpenJDK 11? Peut-être une version bêta? Nooo ....

Alors j'ai regardé apt show openjdk-11-jdk:

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

Pourquoi OpenJDK 10 a-t-il été empaqueté comme openjdk-11 - * ??

69
tudor

En effet, ces packages deviendront OpenJDK 11 lors de la publication. Voir cet article de la liste de diffusion :

Au nom de l'équipe des fondations Ubuntu, je demande une exception SRU pour OpenJDK. Notre plan est de libérer OpenJDK 10 en tant que JRE/JDK par défaut 1 pour Bionic, puis de déplacer le JRE/JDK par défaut dans main vers OpenJDK 11 en septembre/octobre 2018 en tant que SRU.

= Plan proposé =

Bionic sera publié avec OpenJDK 10 en tant que JRE/JDK par défaut et OpenJDK 11 le remplacera une fois qu'il aura atteint GA.

...

Si nous devons passer à OpenJDK 11 dans bionic une fois publié, nous voulons éviter OpenJDK 8 en tant que JRE/JDK par défaut dans Bionic au moment de la publication car tout delta d'interface supplémentaire existant entre 8 et 11 non seulement expose l'archive à une rupture, il expose également les consommateurs externes du JDK à la casse. En comparaison, le delta d'interface entre OpenJDK 10 et OpenJDK 11 devrait être assez faible, en particulier si on le compare au delta entre OpenJDK 8 et OpenJDK 9 déjà connu. Nous devons donc publier OpenJDK 10 en tant que JDK par défaut dans 18.04 et passer à OpenJDK 11 lorsqu’il sera publié.

C'est aussi pourquoi le paquet source de openjdk-11-* est en fait appelé openjdk-lts .


n rapport de bogue a été déposé - veuillez vous y abonner (mais ne commentez pas, à moins que vous ne souhaitiez ajouter de nouvelles informations, ce qui est peu probable). Jeremy Bicha, un développeur d'Ubuntu, a répondu:

Le but est de mettre à jour openjdk-11 à 11 dans Ubuntu 18.04 LTS. C'est pourquoi il a été nommé de cette façon. C'est un changement majeur et il faudra un certain temps pour s'y préparer. Il n’est pas nécessaire de demander que cela soit fait puisque cela sera fait.

Ubuntu 18.04 LTS a été publié plusieurs mois avant OpenJDK 11, il était donc impossible de fournir OpenJDK 11 avant Ubuntu 18.04 LTS.

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

Désolé pour le dérangement.

2018-11-24: S'il vous plaît, ne demandez pas d'ETA. Cela envoie un courrier électronique à tous les abonnés à ce bogue et ne résout pas le problème.

Ce bogue est en cours de traitement. openjdk 11.0.1 a été mis à jour en 18.10 et une mise à jour de sécurité devait être traitée rapidement dans 18.04 LTS. 11.0.1 arrivera à 18.04 LTS quand il sera prêt, mais c’est un changement majeur qui nécessite une coordination minutieuse.

2019-02-26: Ce bogue est déjà traité dans le bogue 1814133, je le marque donc comme un doublon. Une discussion plus approfondie devrait avoir lieu sur ce bogue au lieu d’ici.


Un nouveau rapport de bogue a été ouvert pour suivre toutes les modifications à apporter. Il y en a beaucoup - un compte approximatif de 140. Extraits du rapport de bogue:

Cette transition est une mise à jour de sécurité d’openjdk-lts d’openjdk-10 à openjdk-11. Cela introduit des problèmes d'exécution et FTBFS qui nécessitent également des backports de plusieurs packages dans la poche de sécurité.

Les packages sont développés sur des PPA sous l’équipe https://launchpad.net/~openjdk-11-transition . Les AAE dépendent uniquement de la poche de sécurité et sont séparés par étapes.

Le processus convenu entre les fondations et l'équipe de sécurité est que les packages dans les PPA soient copiés binaire dans les problèmes proposés par bionic, vérifiés pour la migration, et - aucun problème en attente - dans Bionic-security.

[...]

Quelques paquets devront peut-être aussi être mis à jour dans Cosmic, mais à titre exceptionnel, cela sera fait une fois que la transition bionique aura été élaborée.

Et un autre dev Ubuntu, nota Tiago Stürmer Daitx :

[Nous] prévoyons de mettre à jour Java les applications concernées par cette transition.

Pour être plus précis, tout paquet qui ne fonctionne pas correctement avec openjdk-11 sera examiné et pourra faire l’objet d’une mise à jour. La mise à jour n'implique pas nécessairement que nous utilisions la dernière version: nous pourrions simplement appliquer ou sauvegarder des modifications qui leur permettent de fonctionner sous openjdk-11.

Toujours pas d'ETA à l'heure actuelle. De nombreux packages ont été mis à jour et ajoutés aux divers PPA gérés par l'équipe de transition. Si vous souhaitez participer aux tests, vérifiez-les.


Mise à jour du 17 avril 2019:

Il semble que ce correctif ait été publié. apt show openjdk-11-jdk montre maintenant:

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

Et le résultat de Java -version est:

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

Voir la réponse de muru ci-dessus,

mais pour contourner le problème, vous pouvez installer openjdk 11 manuellement et l’ajouter aux alternatives de mise à jour afin de pouvoir changer de version. Lorsque le paquet officiel est mis à jour, vous pouvez passer à cela. voir ci-dessous pour voir comment:

$ 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

qui décompresse le jdk sous /usr/lib/jvm/jdk-11.0.2

puis l'ajouter au système alternatif

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'

le voir dans les alternatives

$ 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

vérifier cela fonctionne

$ 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