Ubuntu: OpenJDK 8 - Não é possível localizar o pacote

95

Acabei de instalar o Ubuntu, e esta é a primeira vez que trabalho em um ambiente Linux, então aceite minha noobismo aqui.

De qualquer forma, baixei o Java 8 JDK diretamente da Oracle, mas sei que também há um OpenJDK para Java 8. Eu tenho duas perguntas.

  1. Qual é a diferença entre a versão Oracle e OpenJDK. Prós e contras?

  2. Quando tento obter o OpenJDK 8, não consigo. Estou colando o comando do terminal e a mensagem de erro que recebo aqui, esperando um conselho. Novamente, muito novo no Linux, estou na minha primeira distro Linux há menos de uma hora aqui neste momento.

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package openjdk-8-jdk

Qualquer ajuda seria apreciada. Enquanto isso, vou apenas usar o pacote Oracle. Obrigado.

Editar:

Então, agora eu tenho um novo problema. Instalei o OpenJDK 7, ele veio com o Maven e instalei antes de perceber que estava conseguindo um acordo dois por um. Agora tenho o JDK 7, o Eclipse e o Maven, e todos estão funcionando, mas estou preso no JDK 7 em vez do 8.

Vi que tem um link abaixo, pretendo conferir pela manhã, são 2h da manhã e estou cansado agora. Qualquer outro conselho para esta nova edição seria bem-vindo, caso contrário, com certeza estarei checando esse link logo de manhã.

user2223059
fonte
Qual versão do Ubuntu você está executando? As últimas duas versões o têm disponível como uma opção de instalação.
Makoto
Ligação de Stephen vai resolver o seu problema :)
Juned
Obrigado. São 2 da manhã, então vou para a cama, mas verificarei o link pela manhã. Eu adicionei uma edição à minha pergunta com um problema adicional, se você pudesse dar uma olhada, seria ótimo. Se o link / resposta existente também ajudar com isso, peço desculpas por estar muito cansado para dar uma olhada agora, estarei checando pela manhã.
user2223059
Estou no Ubuntu 14.10, eu acredito. Qualquer que seja o lançamento de longo prazo mais recente.
user2223059

Respostas:

122

ATUALIZAÇÃO : instalação sem privilégios de root abaixo


Aconselho você a não instalar pacotes manualmente no sistema ubuntu se já houver um repositório (semi-oficial) capaz de resolver seu problema. Além disso, use o Oracle JDK para desenvolvimento, apenas para evitar problemas de compatibilidade (muito esporádicos) (eu tentei muitos anos atrás, com certeza é melhor agora).

Adicione o repo webupd8 ao seu sistema:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Instale sua versão preferida de jdk (versões de java-6 a java-9 disponíveis):

sudo apt-get install oracle-java8-installer

Você também pode instalar várias versões do jdk, misturando as versões do openjdk e do oracle. Em seguida, você pode usar o comando update-java-backups para alternar entre as versões instaladas:

# list available jdk
update-java-alternatives --list

# use jdk7
sudo update-java-alternatives --set java-7-oracle

# use jdk8
sudo update-java-alternatives --set java-8-oracle

Requisitos

Se você tiver add-apt-repository: command not foundcerteza de ter software-properties-commoninstalado:

sudo apt-get install software-properties-common

Se você estiver usando uma versão mais antiga do Ubuntu:

sudo apt-get install python-software-properties

Instalação JDK sem privilégios de root

Se você não tem direitos de administrador em sua máquina de destino, sua aposta mais simples é usar sdkmanpara instalar o openjdk certificado pelo zulu:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

NOTA : o sdkman permite instalar também o Oracle JDK oficial, embora não seja a opção padrão. Veja as versões disponíveis com:

sdk ls java

Instale a versão escolhida com:

sdk install java <version>

Por exemplo:

sdk install java 9.0.1-oracle

Glossário de comandos

  • sudo <command> [command_arguments] : executa um comando com o privilégio de superusuário.

  • add-apt-repository <PPA_id> : Ubuntu (assim como todos os derivados do Debian e, de um modo geral, todas as distribuições do Linux) tem um repositório principal de pacotes que lidam com coisas como dependências e atualizações de pacotes. No Ubuntu é possível estender o repositório principal usando um PPA (Personal Package Archive) que geralmente contém pacotes não disponíveis no sistema (assim como oracle jdk) ou versões atualizadas dos disponíveis (exemplo: LibreOffice 5 em LTS está disponível apenas através deste PPA ).

  • apt-get [install|update|upgrade|purge|...] : é "o" gerenciador de pacote de linha de comando usado para manipular o estado de cada repositório no sistema (instalação / atualização / atualização pode ser vista como uma alteração do estado atual do repositório).

No nosso caso : com o comando sudo add-apt-repository ppa:webupd8team/javainformamos ao sistema que a próxima atualização do repositório deve recuperar as informações dos pacotes também do repo webupd8.

Com sudo apt-get update, realmente atualizamos o repositório do sistema (todas essas operações requerem privilégios de superusuário, portanto, adicionamos sudo aos comandos).

sudo apt-get install oracle-java8-installer

  • update-java-transactions (uma versão específica do java das update-alternativas ): no Ubuntu vários pacotes fornecem a mesma funcionalidade (navegar na internet, compilar e-mails, editar um arquivo de texto ou fornecer executáveis ​​java / javac ...). Para permite que o sistema escolha a ferramenta de favoritos do usuário dada uma tarefa específica de um mecanismo utilizando links simbólicos sob /etc/alternatives/é usado. Tente atualizar o jdk conforme indicado acima (alterne entre java 7 e java 8) e veja como altere a saída deste comando:

    ls -l /etc/alternatives/java*

Em nosso caso : sudo update-java-alternatives --set java-8-oracleatualize os links simbólicos em / etc / alternative para apontar para executáveis ​​java-8-oracle.

Extras:

  • man <command> : comece a usar o man para ler uma ajuda muito bem escrita e detalhada sobre (quase) todos os comandos do shell e suas opções (cada comando que menciono nesta pequena resposta tem uma página de manual, tente man update-java-alternatives).

  • apt-cache search <search_key> : consulta o cache APT para procurar um pacote relacionado com a search_key fornecida (pode ser o nome do pacote ou alguma palavra na descrição do pacote).

  • apt-cache show <package> : fornece informações APT para um pacote específico (versão do pacote, instalado ou não, descrição).

Giuseppe Ricupero
fonte
O problema é que recebo a mensagem "Não foi possível localizar o pacote oracle-java8-installer". A mesma coisa acontece quando tento obter o openjdk 8 usando o comando sudo apt-get.
user2223059
2
Notavelmente, esta é (pelo menos rotulada como) a versão comercial do Oracle do java, não a versão da comunidade aberta (openjre).
ThorSummoner de
1
@basZero: Parece que você precisa instalar propriedades de software: apt-get install software-properties-common. Vou atualizar a postagem consequentemente para incluir esse requisito. Obrigado
Giuseppe Ricupero
1
Esta resposta não é válida - o oracle proíbe downloads diretos do instalador java. sudo apt-get install oracle-java8-installer falha
Alec Istomin
2
Estou tentando resolver esse problema há 4 horas. Obrigado por esta solução incrível!
ickyrr
109

Como você pode ver, só tenho o java 1.7 instalado (em uma máquina Ubuntu 14.04).

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Para instalar o Java 8, eu fiz,

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

Depois, agora tenho java 7 e 8,

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

BÔNUS ADICIONADO (como alternar entre as diferentes versões)

  • execute o seguinte comando no terminal:

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

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

Como você pode ver, estou executando o jdk 8 aberto. Para alternar para o jdk 7, pressione 1e pressione a Entertecla. Faça o mesmo javaccom sudo update-alternatives --config javac,.

Verifique as versões para confirmar a mudança: java -versione javac -version.

samsamara
fonte
2
Muito útil porque eu não sabia qual repo era necessário para instalar o OpenJDK! Muito obrigado.
cram2208
@ cram2208 fico feliz por ter ajudado você. obrigado pelo comentário.
samsamara de
O openjdk-r é seguro o suficiente para o servidor?
Wang
Obrigado pela resposta detalhada, esta solução é perfeitamente adequada para mim.
Muddasir23 01 de
@ Muddasir23 que bom que foi útil!
samsamara
13

Estou obtendo o OpenJDK 8 dos repositórios oficiais do Debian, em vez de algum PPA aleatório ou binário Oracle não livre. Veja como eu fiz:

sudo apt-get install debian-keyring debian-archive-keyring

Faça /etc/apt/sources.list.d/debian-jessie-backports.list:

deb http://httpredir.debian.org/debian/ jessie-backports main

Faça /etc/apt/preferences.d/debian-jessie-backports:

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

Então, finalmente, faça a instalação:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
Hans-Christoph Steiner
fonte
1
E finalmente update-alternatives --config java ;-)
Javali
Muito obrigado! Esta é a única solução que funcionou para mim (Deb 8)
3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

isso deve funcionar

Ahmed Emad
fonte
Adicione uma explicação sobre o que isso adiciona às respostas existentes.
Gert Arnold
Eu estava usando o WSL2 do Windows e esqueci de atualizar os pacotes antes de instalar o OpenJDK e recebi o mesmo erro. @GertArnold, a resposta de Zoe me ajudou nesse cenário.
pcdro
0

Eu estava tendo o mesmo problema e tentei todas as soluções desta página, mas nenhuma funcionou.

O que finalmente funcionou foi adicionar o universerepo à minha lista de repo. Para fazer isso, execute o seguinte comando

sudo add-apt-repository universe

Depois de executar o comando acima, fui capaz de executar

sudo apt install openjdk-8-jre

sem um problema e o pacote foi instalado.

Espero que isso ajude alguém.

Daniel Black
fonte
Não tenho certeza por que fui rejeitado para esta resposta. Se houver algo incorreto ou um possível problema, deixe um comentário para ajudar os outros e eu a entender melhor.
Daniel Black
0

Depois de adicionar o JDKrepo, antes de instalar você pode querer executar uma atualização primeiro para que o repo possa ser adicionado execute apt update

e então continue com sua instalação sudo apt install adoptopenjdk-8-hotspot

franck
fonte