Ubuntu: OpenJDK 8 - No se puede localizar el paquete

103

Así que acabo de instalar Ubuntu, y esta es la primera vez que trabajo en un entorno Linux, así que tengan paciencia con mi noobishness aquí.

De todos modos, descargué Java 8 JDK directamente de Oracle, pero tengo entendido que también hay un OpenJDK para Java 8. Tengo dos preguntas.

  1. ¿Cuál es la diferencia entre la versión de Oracle y OpenJDK? ¿Pros contras?

  2. Cuando intento obtener OpenJDK 8, no puedo. Estoy pegando el comando de terminal y el mensaje de error que recibo aquí, esperando un consejo. Nuevamente, muy nuevo en Linux, he estado en mi primera distribución de Linux por menos de una hora aquí en este 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
    

Cualquier ayuda sería apreciada. Mientras tanto, solo usaré el paquete Oracle. Gracias.

Editar:

Entonces, ahora tengo un nuevo problema. Instalé OpenJDK 7, vino con Maven y lo instalé antes de darme cuenta de que estaba obteniendo un trato de dos por uno. Ahora tengo JDK 7, Eclipse y Maven, y todos funcionan, pero estoy atascado en JDK 7 en lugar de 8.

Vi que hay un enlace a continuación, tengo la intención de comprobarlo en la mañana, son las 2 a.m. y estoy cansado en este momento. Cualquier otro consejo para este nuevo número sería apreciado; de lo contrario, definitivamente revisaré ese enlace a primera hora de la mañana.

usuario2223059
fuente
¿Qué versión de Ubuntu está ejecutando? Las últimas versiones lo han tenido disponible como opción de instalación.
Makoto
Enlace de Stephen va a resolver su problema :)
Juned
Gracias. Son las 2 de la mañana, así que me voy a la cama, pero comprobaré el enlace por la mañana. Agregué una edición a mi pregunta con un problema adicional, si pudiera revisarlo sería genial. Si el enlace / respuesta existente también ayuda con eso, me disculpo por estar demasiado cansado para verlo en este momento, lo revisaré por la mañana.
user2223059
Estoy en ubuntu 14.10, creo. Cualquiera que sea el lanzamiento a largo plazo más reciente.
user2223059

Respuestas:

126

ACTUALIZACIÓN : instalación sin privilegios de root a continuación


Le aconsejo que no instale paquetes manualmente en el sistema ubuntu si ya existe un repositorio (semioficial) capaz de resolver su problema. Además, use Oracle JDK para el desarrollo, solo para evitar problemas de compatibilidad (muy esporádicos) (lo intenté hace muchos años, seguramente es mejor ahora).

Agregue el repositorio webupd8 a su sistema:

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

Instale su versión preferida de jdk (versiones de java-6 a java-9 disponibles):

sudo apt-get install oracle-java8-installer

También puede instalar varias versiones de jdk, mezclando versiones de openjdk y oracle. Luego, puede usar el comando update-java-alternativas para cambiar entre la versión instalada:

# 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

Si lo consigue, add-apt-repository: command not foundasegúrese de haber software-properties-commoninstalado:

sudo apt-get install software-properties-common

Si está utilizando una versión anterior de Ubuntu:

sudo apt-get install python-software-properties

Instalación de JDK sin privilegios de root

Si no tiene derechos de administrador en su máquina de destino, su apuesta más simple es usar sdkmanpara instalar el openjdk certificado por zulu:

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

NOTA : sdkman permite instalar también el JDK oficial de Oracle, aunque no es la opción predeterminada. Ver versiones disponibles con:

sdk ls java

Instale la versión elegida con:

sdk install java <version>

Por ejemplo:

sdk install java 9.0.1-oracle

Glosario de comandos

  • sudo <command> [command_arguments] : ejecuta un comando con privilegio de superusuario.

  • add-apt-repository <PPA_id> : Ubuntu (al igual que todos los derivados de Debian y, en general, todas las distribuciones de Linux) tiene un repositorio principal de paquetes que maneja cosas como dependencias de paquetes y actualizaciones. En Ubuntu es posible extender el repositorio principal usando un PPA (Archivo Personal de Paquetes) que generalmente contiene paquetes que no están disponibles en el sistema (como Oracle jdk) o versiones actualizadas de los disponibles (ejemplo: LibreOffice 5 en LTS está disponible solo a través de este PPA ).

  • apt-get [install|update|upgrade|purge|...] : es "el" gestor de paquetes de la línea de comandos que se utiliza para manipular el estado de cada repositorio en el sistema (la instalación / actualización / actualización puede verse como una alteración del estado actual del repositorio).

En nuestro caso : con el comando sudo add-apt-repository ppa:webupd8team/javainformamos al sistema que la próxima actualización del repositorio debe recuperar la información de los paquetes también del repositorio webupd8.

En sudo apt-get updaterealidad, actualizamos el repositorio del sistema (todas estas operaciones requieren privilegios de superusuario, por lo que anteponemos sudo a los comandos).

sudo apt-get install oracle-java8-installer

  • update-java-alternativas (una versión específica de Java de update-alternativas ): en Ubuntu, varios paquetes proporcionan la misma funcionalidad (navegar por Internet, compilar correos, editar un archivo de texto o proporcionar ejecutables java / javac ...). Para permite que el sistema para elegir la herramienta de favoritos del usuario dado una tarea específica un mecanismo usando enlaces simbólicos bajo /etc/alternatives/se utiliza. Intente actualizar el jdk como se indicó anteriormente (cambie entre java 7 y java 8) y vea cómo cambiar la salida de este comando:

    ls -l /etc/alternatives/java*

En nuestro caso : sudo update-java-alternatives --set java-8-oracleactualice los enlaces simbólicos en / etc / alternativas para que apunten a los ejecutables java-8-oracle.

Extras:

  • man <command> : comience a usar man para leer una ayuda muy bien escrita y detallada sobre (casi) cada comando de shell y sus opciones (cada comando que menciono en esta pequeña respuesta tiene una página de manual, intente man update-java-alternatives).

  • apt-cache search <search_key> : consulta la caché de APT para buscar un paquete relacionado con la clave de búsqueda proporcionada (puede ser el nombre del paquete o alguna palabra en la descripción del paquete).

  • apt-cache show <package> : proporciona información APT para un paquete específico (versión del paquete, instalada o no, descripción).

Giuseppe Ricupero
fuente
1
El problema es que aparece el mensaje "No se puede localizar el paquete oracle-java8-installer". Lo mismo sucede cuando intento obtener openjdk 8 usando el comando sudo apt-get.
user2223059
3
En particular, esta es (al menos etiquetada como) la versión comercial de Oracle de java, no la versión de comunidad abierta (openjre).
ThorSummoner
1
@basZero: Parece que necesita para instalar software propiedades: apt-get install software-properties-common. En consecuencia, actualizaré la publicación para incluir este requisito. Gracias
Giuseppe Ricupero
1
Esta respuesta no es válida: Oracle prohíbe las descargas directas del instalador de Java. sudo apt-get install oracle-java8-installer falla
Alec Istomin
2
He intentado resolver este problema durante 4 horas. ¡Gracias por esta increíble solución!
ickyrr
116

Como puede ver, solo tengo java 1.7 instalado (en una 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 Java 8, lo hice,

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

Luego, ahora tengo java 7 y 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

BONUS AGREGADO (cómo cambiar entre diferentes versiones)

  • ejecute el siguiente comando desde la 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 puede ver, estoy ejecutando jdk abierto 8. Para cambiar a jdk 7, presione 1y presione la Entertecla. Haz lo mismo javaccon sudo update-alternatives --config javac,.

Verifique las versiones para confirmar el cambio: java -versiony javac -version.

samsamara
fuente
2
¡Muy útil porque no sabía qué repositorio se necesitaba para instalar OpenJDK! Muchas gracias.
cram2208
@ cram2208 me alegro de que te haya ayudado. gracias por el comentario.
samsamara
¿Es el openjdk-r lo suficientemente seguro para el servidor?
Wang
Gracias por la respuesta detallada, esta solución funciona perfectamente para mí.
Muddasir23
14

Obtengo OpenJDK 8 de los repositorios oficiales de Debian, en lugar de algún PPA aleatorio o binario de Oracle no libre. Así es como lo hice:

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

Hacer /etc/apt/sources.list.d/debian-jessie-backports.list:

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

Hacer /etc/apt/preferences.d/debian-jessie-backports:

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

Luego, finalmente haz la instalación:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
Hans-Christoph Steiner
fuente
1
Y finalmente finalmente update-alternatives --config java ;-)
Javali
¡Muchas gracias! Esta es la única solución que funcionó para mí (Deb 8)
3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

Esto debería funcionar

Ahmed Emad
fuente
Agregue una explicación de lo que esto agrega a las respuestas existentes.
Gert Arnold
Estaba usando WSL2 de Windows y olvidé actualizar los paquetes antes de instalar OpenJDK y obtuve el mismo error. @GertArnold, la respuesta de Zoe me ayudó en ese escenario.
pcdro
0

Tenía el mismo problema y probé todas las soluciones en esta página, pero ninguna funcionó.

Lo que finalmente funcionó fue agregar el universerepositorio a mi lista de repositorios. Para hacer eso, ejecute el siguiente comando

sudo add-apt-repository universe

Después de ejecutar el comando anterior pude ejecutar

sudo apt install openjdk-8-jre

sin problemas y el paquete se instaló.

Espero que esto ayude a alguien.

Daniel negro
fuente
No estoy seguro de por qué me han votado negativamente por esta respuesta. Si hay algo incorrecto o un problema potencial, deje un comentario para ayudar a los demás y a mí mismo a comprender mejor.
Daniel Black
0

Después de agregar el JDKrepositorio, antes de la instalación, es posible que desee ejecutar una actualización primero para que se pueda agregar el repositorio. apt update

y luego continúe con su instalación sudo apt install adoptopenjdk-8-hotspot

franck
fuente