Почему OpenJDK 10 упакован как openjdk-11- *?

70

При поиске компиляции OpenJDK из исходных кодов новейшая версия General Availability ( OpenJDK 10.0.1 ) настаивает на OpenJDK 9 или 10. Однако выпуск JDK 11 не должен быть выпущен до сентября 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- * ??

тюдоровский
источник

Ответы:

62

Это потому, что эти пакеты станут OpenJDK 11, когда они будут выпущены. Смотрите этот список рассылки :

От имени команды разработчиков Ubuntu я запрашиваю исключение SRU для OpenJDK. Мы планируем выпустить OpenJDK 10 в качестве JRE / JDK 1 по умолчанию для Bionic, а затем переместить JRE / JDK по умолчанию в main на OpenJDK 11 в сентябре / октябре 2018 года в качестве SRU.

= Предлагаемый план =

Bionic будет выпущен с OpenJDK 10 как JRE / JDK по умолчанию, и OpenJDK 11 заменит его, как только достигнет GA.

...

Если мы собираемся переключиться на OpenJDK 11 в Bionic после выпуска, мы хотим избежать OpenJDK 8 в качестве JRE / JDK по умолчанию в Bionic во время выпуска, потому что любая дополнительная дельта интерфейса, существующая между 8 и 11, не только подвергает архив повреждению, это также подвергает внешних потребителей JDK к поломке. Для сравнения, ожидается, что дельта интерфейса между OpenJDK 10 и OpenJDK 11 будет довольно небольшой, особенно по сравнению с дельтой между OpenJDK 8 и OpenJDK 9, которая, как мы уже знаем, велика. Поэтому мы должны выпустить OpenJDK 10 в качестве JDK по умолчанию в 18.04, перейдя к OpenJDK 11 после его выпуска.

Вот почему пакет с исходным кодом openjdk-11-*фактически называется openjdk-lts.


Отчет об ошибке был подан - пожалуйста, подпишитесь на него (но не комментируйте, если у вас нет новой информации для добавления, что маловероятно). Разработчик Ubuntu, Джереми Бича, ответил:

Намерение состоит в том, чтобы обновить openjdk-11 до 11 в Ubuntu 18.04 LTS. Вот почему это было названо так. Это серьезное изменение, и его подготовка займет некоторое время. Нет необходимости просить об этом, поскольку это будет сделано.

Ubuntu 18.04 LTS был выпущен за несколько месяцев до выпуска OpenJDK 11, поэтому было невозможно предоставить OpenJDK 11 до выхода Ubuntu 18.04 LTS.

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, поэтому я отмечаю ее как дубликат. Дальнейшее обсуждение должно произойти на эту ошибку, а не здесь.


Новый отчет об ошибке был открыт для отслеживания всех изменений , которые должны быть сделаны, и есть много из них - грубый подсчет 140. Выдержки из отчета об ошибке:

Этот переход является обновлением безопасности openjdk-lts с openjdk-10 на openjdk-11. Это приводит к проблемам времени выполнения и FTBFS, которые также требуют обратных портов нескольких пакетов в карман безопасности.

Пакеты собираются на PPA в команде https://launchpad.net/~openjdk-11-transition . PPA зависят исключительно от защитного кармана и разделены на этапы.

Согласованный процесс между фондами и командой безопасности заключается в том, что пакеты в PPA будут бинарно копироваться в предложенный bionic, проверяться на наличие проблем миграции и - без проблем - копироваться в bionic-security.

[...]

Некоторые пакеты также могут быть обновлены в Cosmic, но в качестве исключения это будет сделано после прохождения Bionic-перехода.

И еще один разработчик Ubuntu, Tiago Stürmer Daitx отметил :

[Мы] планируем обновить Java-приложения, на которые повлиял этот переход.

Точнее говоря, любой пакет, который не запускается правильно с openjdk-11, будет исследован и станет кандидатом на обновление. Обновление не обязательно подразумевает, что мы будем использовать последнюю версию: мы могли бы просто применить или сделать бэкпорт изменения, которые позволят им работать в openjdk-11.

По-прежнему нет ETA в настоящее время. Несколько пакетов были обновлены и добавлены в различные PPA, поддерживаемые командой перехода, поэтому, если вы хотите помочь с тестированием, обязательно проверьте их.


Обновление 17 апреля 2019 года:

Похоже, исправление было выпущено. Сейчас 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)
Мур
источник
6
Только два дня? Это огромная задержка? Oo Это пакет, который Canonical поддерживает годами. Я уверен, что вы можете использовать свою подписку Canonical, чтобы требовать более быстрых выпусков.
Муру
5
Знание даты релиза не сокращает время, необходимое для QA. Если вы спешите, PPA был обновлен: launchpad.net/~openjdk-r/+archive/ubuntu/ppa Я ожидаю, что пакеты появятся в ближайшее время и оттуда к обновлениям.
Муру
10
Я верю комментарию, но не могу понять, как правильно неправильно классифицировать версию jdk. Это сбивает с толку, и я скажу это, немного нечестно. Просто предоставьте нам варианты на выбор, и мы сможем сделать свои собственные update-alternatives. Спасибо @muru за ответ
Даниэль Инохоса,
10
@ Муру сейчас почти месяц, все еще не большая задержка?
9ilsdx 9rvj 0lo
14
@ 9ilsdx9rvj0lo кто-то подал отчет об ошибке, следите за ним: bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027
Muru,
5

Смотрите ответ Муру выше,

но для временного решения вы можете установить openjdk 11 вручную и добавить его в альтернативы обновления, чтобы вы могли переключать версии, и когда официальный пакет обновляется, вы можете переключиться на него. см. ниже, чтобы увидеть, как:

$ 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

который распаковывает jdk в /usr/lib/jvm/jdk-11.0.2

затем добавьте его в систему альтернатив

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)
Карл
источник
Отвечает на другой вопрос, но так как вы так мило сослались на ответ Муру, и он полезен, я возьму его. +1 ;-) Добро пожаловать в AskUbuntu! :-)
tudor
спасибо, так что я должен был задать новый вопрос: «Как мне обойти это? Вопрос, а затем ответил на него?»
Карл
Технически, да. Ваш ответ является ответом на вопрос «Как установить последнюю (не репозиторийную) версию Java?» тогда как мой вопрос больше касается политики распределения и последовавшей за этим путаницы. Кроме того, вы набрали бы баллы за вопрос, а также за ответы на этот вопрос, и было бы легче искать. Затем связал этот вопрос с этим вопросом как «связанный». :-)
Тюдор
в следующий раз :-) ура
Карл
Ответ, столь популярный, стал статьей devzone : dzone.com/articles/… Не нужно ждать. Другой путь
Kieveli