¿Cómo reemplazar OpenJDK 6 con OpenJDK 7?

33

Sorprendentemente (como OpenJDK 7 se lanzó a disponibilidad general hace aproximadamente 4 meses) Ubuntu 11.10 todavía usa OpenJDK 6 en lugar de 7 de forma predeterminada. ¿Cómo soluciono esto mejor? Prefiero eliminar OpenJDK 6 por completo y dejar que OpenJDK 7 sea default-jdk y default-jre.

No quiero los tarballs oficiales de Oracle, quiero deb repos, la forma estándar de Ubuntu.

Ivan
fuente
Alguien tendría que construir eso en un paquete Debian y ponerlo en un PPA en Launchpad. Si nadie lo hizo aún, puede hacer un .deb o instalar el tar.
Martin Ueding
Sigue siendo el caso con 12.04
Thorbjørn Ravn Andersen
Año 2011 - Ahora Año 2012 - Se resuelve esta realidad (los cuales uno fue considerado como la respuesta lolSi no es así? i gonna write a nice wiki on thisEn mi pregunta / respuesta.
Será mejor actualizar su sistema a LTS.
Ketan Patel

Respuestas:

28

El problema es que el default-jrepaquete depende de OpenJDK 6 y la mayoría de los otros paquetes tienen sus dependencias definidas como default-jre | openjdk-6-jre | sun-java6-jre, por lo tanto, hasta que OpenJDK 7 sea oficialmente compatible y se use como la versión predeterminada, o hasta que todos los paquetes dependientes de Java actualicen sus dependencias, tiene que mantener OpenJDK 6 alrededor y configurar OpenJDK 7 como predeterminado usando update-java-alternatives. Ejemplo para un sistema de 64 bits:

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

En el sistema de 32 bits, el nombre del directorio será diferente, puede encontrar el nombre correcto con el -linterruptor. El segundo comando puede escupir muchos errores; use el --jreinterruptor o simplemente ignore los errores: el script cambia lo que puede y simplemente ignora el resto.

Teóricamente, uno podría editar el default-jrepaquete para que dependa de OpenJDK 7, pero tenga en cuenta que esto puede causar más daño que bien.

jnv
fuente
2
Para que esto funcione con precisión, tuve que asegurarme de que para cada paquete openjdk-6 o icedtea-6 hubiera un paquete correspondiente de openjdk-7 o icetea-7, de lo contrario, update-java-alternative no logrará realizar el cambio.
Blair Zajac
2
Después de instalar icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin) funcionó bien en Ubuntu 12.04. Gracias.
David
10

Para esto, debe tener ambas versiones de jdk instaladas en su sistema. puedes usar apt-get para descargar ambos.

Después de ese intento,

$ sudo update-alternatives --config java

y seleccione el jdk que desea usar.

Openjdk es a veces desfavorable, para algunas de las aplicaciones.

También deberías probar oracle-java o sun-java.

El siguiente enlace es muy útil para este propósito:

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html

shivshnkr
fuente
3

OpenJDK 7 está en los repositorios normales de ubuntu en 11.10, si busca openjdk-7-jre y openjdk-7-jdk e los instala utilizando apt-get / synaptic / software center, deberían reemplazar openjdk-6, si no lo hace primero puede eliminar los paquetes openjdk-6- * usando apt-get purge openjdk-6-*

químico
fuente
1
Los paquetes openjdk-7- * parecen estar instalados junto con openjdk-6- . Y si intento eliminar openjdk-6- , hay toneladas de paquetes que se eliminarán como dependientes (a pesar de que sé que algunas de esas aplicaciones funcionan perfectamente con Java 7).
Ivan
aparentemente default-jretodavía apunta a Java 6.
Thorbjørn Ravn Andersen
2

El repositorio se puede encontrar aquí: https://launchpad.net/~openjdk/+archive/ppa

o:

sudo apt-add-repository ppa:openjdk/ppa
sudo apt-get update
sudo apt-get upgrade

asumiendo que tienes instalado OpenJDK

LasseValentini
fuente
1
Parece que no es para 11.10.
Ivan