Por que o OpenJDK 10 está empacotado como openjdk-11- *?

70

Enquanto procura compilar o OpenJDK a partir do código-fonte, a versão mais recente de Disponibilidade Geral ( OpenJDK 10.0.1 ) insiste no OpenJDK 9 ou 10. O JDK 11, no entanto, não deve ser lançado até setembro de 2018 .

No entanto, para minha surpresa, quando faço apt search openjdko resultado é:

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

Não OpenJDK 9 ou 10!

E espere, esse é o OpenJDK 11? Talvez uma versão beta? Nããão ....

Então eu olhei para apt show openjdk-11-jdk:

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

Por que o OpenJDK 10 foi empacotado como openjdk-11- *?

tudor
fonte

Respostas:

62

Isso ocorre porque esses pacotes se tornarão OpenJDK 11 quando forem lançados. Veja este post na lista de discussão :

Em nome da Equipe de Fundações do Ubuntu, estou solicitando uma exceção SRU para o OpenJDK. Nosso plano é liberar o OpenJDK 10 como o JRE / JDK 1 padrão para Bionic e, em seguida, mover o JRE / JDK padrão principal para o OpenJDK 11 em setembro / outubro de 2018 como uma SRU.

= Plano proposto =

O Bionic será lançado com o OpenJDK 10, pois o JRE / JDK padrão e o OpenJDK 11 o substituirão quando atingir o GA.

...

Se formos mudar para o OpenJDK 11 em biônico uma vez lançado, queremos evitar o OpenJDK 8 como o JRE / JDK padrão em biônico no momento da liberação, porque qualquer delta de interface adicional que exista entre 8 e 11 não apenas expõe o arquivo à quebra, também expõe os consumidores externos do JDK à quebra. Em comparação, espera-se que o delta da interface entre o OpenJDK 10 e o OpenJDK 11 seja bastante pequeno, especialmente em comparação com o delta entre o OpenJDK 8 e o OpenJDK 9 que já sabemos que é grande. Portanto, devemos lançar com o OpenJDK 10 como o JDK padrão na 18.04, passando para o OpenJDK 11 quando ele for lançado.

É também por isso que o pacote de origem openjdk-11-*é realmente chamado openjdk-lts.


Um relatório de bug foi arquivado - assine-o (mas não comente, a menos que você tenha novas informações a adicionar, o que é improvável). Um desenvolvedor do Ubuntu, Jeremy Bicha, respondeu:

A intenção é atualizar o openjdk-11 para 11 no Ubuntu 18.04 LTS. Por isso foi nomeado assim. É uma grande mudança e levará algum tempo para se preparar. Não há necessidade de pedir que seja feito, uma vez que será feito.

O Ubuntu 18.04 LTS foi lançado vários meses antes do OpenJDK 11, por isso não foi possível fornecer o OpenJDK 11 antes do lançamento do Ubuntu 18.04 LTS.

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

Desculpe pela inconveniência.

2018-11-24: Por favor, não solicite um ETA. Isso envia um e-mail a todos os assinantes desse bug e não ajuda a corrigi-lo.

Este bug está sendo trabalhado. O openjdk 11.0.1 foi atualizado em 18.10 e houve uma atualização de segurança que precisava ser tratada rapidamente no 18.04 LTS. 11.0.1 chegará às 18.04 LTS quando estiver pronto, mas é uma grande mudança que requer coordenação cuidadosa.

2019-02-26: Este bug já está sendo tratado no bug 1814133, por isso estou marcando-o como duplicado. Discussões adicionais devem acontecer sobre esse bug em vez de aqui.


Um novo relatório de bug foi aberto para rastrear todas as alterações que precisam ser feitas, e há muitas delas - uma contagem aproximada de 140. Trechos do relatório de bug:

Essa transição é uma atualização de segurança do openjdk-lts do openjdk-10 para o openjdk-11. Isso introduz problemas de tempo de execução e FTBFS, que também exigem backports de vários pacotes no bolso de segurança.

Os pacotes estão sendo construídos em PPAs sob a equipe https://launchpad.net/~openjdk-11-transition . Os PPAs dependem apenas do bolso de segurança e são separados por etapas.

O processo acordado entre as fundações e a equipe de segurança é que os pacotes nos PPAs serão copiados em binários nos propósitos biônicos, verificados quanto a problemas de migração e - sem problemas pendentes - copiados em segurança biônicos.

[...]

Alguns pacotes também podem precisar ser atualizados no Cosmic, mas como uma exceção que será feita após o término da transição Biônica.

E outro desenvolvedor do Ubuntu, Tiago Stürmer Daitx, observou :

[Estamos] planejando atualizar aplicativos java que são afetados por essa transição.

Para ser mais específico, qualquer pacote que não seja executado corretamente com o openjdk-11 será investigado e é candidato a uma atualização. A atualização não implica necessariamente que usaremos a versão mais recente: podemos simplesmente aplicar ou fazer o backport de alterações que permitam que eles funcionem no openjdk-11.

Ainda não há ETA no momento. Alguns pacotes foram atualizados e adicionados aos vários PPAs mantidos pela equipe de transição; portanto, se você deseja ajudar nos testes, verifique-os.


Atualização 17 de abril de 2019:

Parece que a correção foi lançada. Agora apt show openjdk-11-jdkmostra:

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

E a saída de 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)
muru
fonte
6
Apenas dois dias? Isso é um grande atraso? Oo Este é um pacote que a Canonical compromete-se a apoiar há anos. Tenho certeza de que você pode usar sua assinatura Canonical para exigir lançamentos mais rápidos.
muru 27/09/18
5
Porém, saber a data de lançamento não diminui o tempo necessário para o controle de qualidade. Se você estiver com pressa, o PPA foi atualizado: launchpad.net/~openjdk-r/+archive/ubuntu/ppa Espero que os pacotes cheguem à proposta em breve e a partir daí para atualizações.
muru 27/09/18
10
Acredito no comentário, mas não consigo ver como eles classificam incorretamente uma versão do jdk de maneira errada. É confuso e eu vou dizer, um pouco desonesto. Basta ter as versões para escolher, e podemos fazer nossas próprias update-alternatives. Obrigado @muru pela resposta #
Daniel Hinojosa
10
@ muru agora faz quase um mês, ainda não é um grande atraso?
9ilsdx 9rvj 0lo
14
@ 9ilsdx9rvj0lo alguém entrou com um relatório de erros, manter um olho nele: bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027
Muru
5

Veja a resposta de muru acima,

mas para uma solução alternativa, você pode instalar o openjdk 11 manualmente e adicioná-lo às alternativas de atualização para poder alternar versões e, quando o pacote oficial for atualizado, você poderá mudar para isso. veja abaixo para ver como:

$ 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

que descompacta o jdk em /usr/lib/jvm/jdk-11.0.2

depois adicione-o ao sistema de alternativas

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'

veja nas alternativas

$ 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

verifique se funciona

$ 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
fonte
Responde a uma pergunta diferente, mas como você se referiu muito bem à resposta de muru e é útil, eu aceito. +1 ;-) Bem-vindo ao AskUbuntu! :-)
tudor
? obrigado, então eu deveria ter perguntado o novo "como faço para contornar esta questão, em seguida, respondeu ele?
Karl
Tecnicamente sim. Sua resposta é uma resposta para a pergunta "Como instalo a versão mais recente (sem repositório) do Java?" enquanto minha pergunta é mais sobre política de distribuição e a confusão que se seguiu. Além disso, você teria marcado pontos de pergunta e pontos de resposta para essa pergunta, e seria mais fácil pesquisar. Em seguida, vinculou essa pergunta a essa pergunta como "relacionada". :-)
tudor
próxima vez :-) felicidades
Karl
Uma resposta tão popular que se tornou um artigo do devzone : dzone.com/articles/… Não espere. O contrário
Kieveli 04/04