¿Cómo instalo openjdk 7 en Ubuntu 16.04 o superior?

106

Me gustaría actualizar mi sistema principal a 16.04, pero trabajo en proyectos que requieren OpenJDK 7.

Aparentemente no está disponible desde un% trivial apt-get install openjdk-7-jdk . Solo las versiones 8 y 9 se enumeran en el repositorio.

¿Alguien puede indicarme las instrucciones sobre cómo instalarlo?

    
pregunta onairda 23.04.2016 - 12:18

8 respuestas

137
  

Advertencia de seguridad

     

Los paquetes en el PPA mencionados a continuación no se actualizan con la seguridad   parches a Java. No usar en producción; ver respuestas alternativas   en cambio.

     

Al momento de escribir, se realizó la última carga de OpenJDK 7   '2016-04-22' con la versión 7u95 y aún disponible como 'más reciente', donde   Ubuntu 14.04 ha sido actualizado a 7u181 .

ACTUALIZACIÓN: AUNQUE ESTA ES LA RESPUESTA MÁS VOTADA, PROBABLEMENTE NO ES LA QUE DESEA UTILIZAR EN 2018 DEBIDO A LA FALTA DE ACTUALIZACIONES DE SEGURIDAD DE ESTA PPA.

Encontré las siguientes instrucciones que me funcionaron:

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

Esto define el "PPA para carga de OpenJDK (restringido)" como un paquete adicional repositiory, actualiza su información e instala el paquete con sus dependencias (de ese repositorio).

    
respondido por el onairda 24.04.2016 - 00:34
46

No parece que el desarrollador de openjdk-r / ppa esté actualizando el paquete openjdk-7 más allá de la versión 7u95-2.6.4-3. Sin embargo, la descripción de ese paquete "Copiado de debian experimental en Primary Archive para Debian GNU / Linux" nos da una pista sobre cómo manejar esto.

Opción 1: instalación manual

  1. Descargue los paquetes destinados a su arquitectura:
    (para la mayoría de los usuarios, esto significa amd64 si 64bit, o i386 si está instalado Ubuntu de 32 bits)

  2. (Intento de) instalar los paquetes usando dpkg :

    Ubuntu 17.10 y versiones anteriores:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
    

    Ubuntu 18.04 y posterior:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
    
  3. Verifique la salida de dpkg . Si hubo problemas de dependencia, lo cual es probable, verá lo siguiente (con su arquitectura sustituida por amd64):

    Errors were encountered while processing:
    openjdk-7-jre:amd64
    openjdk-7-jre-headless:amd64
    openjdk-7-jdk:amd64

    Si no hubo problemas de dependencia, genial, listo, salte al # 4. De lo contrario, si necesita resolver algunos problemas de dependencia, esto se maneja con:

    sudo apt install -f
    

    Observe que no es necesario volver a ejecutar dpkg después de dejar que apt resuelva dependencias. Automáticamente finalizará la instalación de los paquetes de openjdk.

  4. Actualiza las alternativas de Java. Puede ver todas las versiones instaladas de Java con update-java-alternatives --list . Para activar OpenJDK Java 1.7, ejecute:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    Es posible que observe un error acerca de que el complemento IcedTeaPlugin.so no esté disponible. Esto no es una preocupación real para los desarrolladores que trabajan con el JDK.

  5. Verifica que Java funcione:

    java -version
    

    que debería generar algo similar a:

    java version "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)

Opción 2: instalación automática (incluidas las actualizaciones con apt )

Fijar se puede utilizar para instalar y actualizar openjdk-7-jdk y sus dependencias de los repositorios de Debian.

  1. Cree un archivo de fijación que le indique a apt que solo considere los paquetes que nos interesan (ciertamente no queremos que toda nuestra distribución de Ubuntu "se actualice" con los paquetes experimentales de Debian).

    Crear archivo /etc/apt/preferences.d/debian con los contenidos siguientes. Necesitará privilegios de superusuario, así que use uno de sudo vim , sudo nano , gksudo gedit , etc.

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    

    Para Ubuntu 17.10 y versiones anteriores, también agregue lo siguiente (y vea la nota en la parte inferior):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Instalar el llavero Debian:

    sudo apt install debian-archive-keyring
    

    Nota: aunque este es el método más simple para agregar el anillo de claves de Debian, puede no estar actualizado. Compruebe la salida como la siguiente al ejecutar apt update en el paso 4:

    W: GPG error: http://cdn-fastly.deb.debian.org/debian experimental InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: The repository 'http://httpredir.debian.org/debian experimental InRelease' is not signed.

    Si ve este error, agregue manualmente las claves necesarias con:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
    

    donde 8B48AD6246925553 y 7638D0442B90D010 deben coincidir con las pubkeys que ve en el mensaje de advertencia.

  3. Agregue los repositorios necesarios:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    ¿Por qué no utilizar un repositorio estable de Debian? Te encontrarás con dependencias insatisfactorias con Debian estable. Los repositorios experimentales (para openjdk-7) y sid (para libjpeg62-turbo, libfontconfig1 y fontconfig-config) son más indulgentes con las versiones de dependencia.

  4. Actualizar apt caché (espere que esto demore un poco, ya que las listas de paquetes de Debian son grandes):

    sudo apt update
    
  5. Instalar openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
    
  6. Actualiza las alternativas de Java. Puede ver todas las versiones instaladas de Java con update-java-alternatives --list . Para activar OpenJDK Java 1.7, ejecute:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    Es posible que observe un error acerca de que el complemento IcedTeaPlugin.so no esté disponible. Esto no es una preocupación real para los desarrolladores que trabajan con el JDK.

  7. Verifica que Java funcione:

    java -version
    

    que debería generar algo similar a:

    java version "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)

notas de fontconfig

libfontconfig1 y fontconfig-config deben actualizarse a 2.12 o posterior en Ubuntu 17.10 y versiones anteriores. Los paquetes de actualización de Debian no contienen las personalizaciones de Ubuntu, por lo que algunas aplicaciones muestran fuentes feas con estos paquetes instalados; p.ej. Charles Web Debugging Proxy. Dependiendo de los programas que use, puede que este problema le afecte o no.

    
respondido por el MDMower 27.07.2016 - 16:51
5

Puede descargar un OpenJDK 7 de Azul que se ajuste a sus necesidades. Ambos tienen un DEB (para el sistema de paquete) y una distribución ZIP. Solo he trabajado con la distribución ZIP.

enlace

    
respondido por el Thorbjørn Ravn Andersen 23.10.2016 - 21:10
0

Instalar Java 7 en Ubuntu 16.04, Ubuntu 17.04

Se recomienda instalar Oracle Java , ya que tiene una ventaja de rendimiento sobre OpenJDK . Por ese motivo, quiero publicar una alternativa. Si desea instalar Oracle Java, ejecute los siguientes comandos en el terminal para instalarlo desde PPA.

  1. Agregue los repositorios necesarios:

    sudo add-apt-repository ppa:webupd8team/java
    
  2. Actualiza apt caché e instala oracle-java7 :

    sudo apt update
    sudo apt install java-common oracle-java7-installer
    

    Durante el proceso de instalación, deberá aceptar el acuerdo Licencia de Oracle . Una vez instalado, debemos establecer variables de entorno Java, como JAVA_HOME

  3. Corregir variables de entorno Java.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Verifica que Java funcione:

    java -version
    

    que debería generar algo similar a:

    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
    
respondido por el Teocci 26.06.2017 - 19:17
0

Oracle JDK alternativa:

Quería evitar el esfuerzo con repositorios porque cambio entre 7, 8 y 9, así que terminé con Oracle JDK en lugar de OpenJDK. Descargado de el sitio oficial . No estoy seguro de si la última compilación 80 contiene las mismas correcciones que la compilación 16 de OpenJDK. Pero la tengo para desarrollo, por lo que no significa mucho para mí.

Luego, debe establecer $JAVA_HOME en el entorno para que varios scripts recojan el JDK correcto (por ejemplo, Maven, JBoss, etc.).

Para completar, la versión 7 de JDK recibió EOL, incluso la asistencia pública de JDK 8 es que finaliza desde septiembre de 2017 y no recibirá actualizaciones públicas después de septiembre de 2018.

    
respondido por el Ondra Žižka 19.11.2017 - 17:58
0

Usar contenedores

Esta es una respuesta universalmente válida sobre cómo ejecutar <outdated> software eliminado en <current> Ubuntu: contenerize su aplicación .

Por ejemplo, use Docker y una imagen base anterior de Ubuntu en la que el software que está buscando todavía está disponible / mantenido.

También funciona al revés; pruebe el software en una distribución de Linux más reciente o incluso otra en su Ubuntu estable actual.

Ejemplo para Java 7 usando Ubuntu 14.04

  1. Instalar Docker: la versión gratuita de Docker CE está bien. Consulte, por ejemplo, enlace o use el paquete docker.io en las versiones recientes de Ubuntu enviadas.

  2. En una carpeta vacía, crea un archivo Dockerfile :

    FROM ubuntu:trusty
    RUN apt-get update \
        && apt-get install -y \
            openjdk-7-jdk \
        && rm -rf /var/lib/apt/lists/*
    
    ENTRYPOINT ["/usr/bin/java"]
    

    Agregue más paquetes en ese comando si lo necesita.

  3. En esa carpeta, ejecuta:

    docker build -t gertvdijk/java7 .
    
  4. Ejecuta un comando dentro de un contenedor de un solo uso utilizando esa imagen de Java 7:

    E.g. java -version :

    docker run --rm -it gertvdijk/java7 -version
    

    Salida:

    java version "1.7.0_181"
    OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
    OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
    
  5. Opcionalmente, cree un contenedor para mayor comodidad.

    • Crea un archivo /usr/local/bin/java7-in-docker con contenido:

      #!/usr/bin/env sh -e
      
      DOCKER_IMAGE=gertvdijk/java7
      PWD="$(pwd)"
      
      exec docker run \
        --rm -it \
        -v ${PWD}:${PWD} \
        -v "/etc/passwd:/etc/passwd:ro" \
        -v "/etc/group:/etc/group:ro" \
        --user "$(id -u):$(id -g)" \
        --workdir "${PWD}" \
        "${DOCKER_IMAGE}" \
        $@
      

      Esto hará que el directorio de trabajo actual esté disponible dentro del contenedor, no su sistema de archivos completo, y se hará pasar por su cuenta de usuario local en el espacio de nombres del contenedor.

    • Marcar como ejecutable:

      sudo chmod +x /usr/local/bin/java7-in-docker
      
  6. Ejecute su Java 7 de forma transparente, así:

    java7-in-docker -jar relative/path/to/some.jar
    
respondido por el gertvdijk 27.07.2018 - 00:21
0

Una adición a la respuesta de MDMower anterior acerca de la instalación manual o automática. (*)

En Ubuntu 16.04.5 LTS con núcleos hwe-16.04-edge y Cinnamon como DE, experimenté un comportamiento de fuente inesperado al instalar / actualizar libfontconfig1 y su dependencia fontconfig-config. De repente, tenía fuentes monoespaciales extrañas y delgadas y apenas legibles y otras fuentes "feas" en las barras de menú de muchas aplicaciones, así como también en las ventanas de los terminales y en muchos otros lugares de mis aplicaciones.

En caso de que encuentre este problema: Parece que no hay una solución de trabajo en tiempo de ejecución para esto. No tiene sentido perder el tiempo buscando una configuración para corregir en cualquiera de las preferencias de Cinnamon o Gnome o FontConfig o de su terminal (por ejemplo, gconf-editor / gconftool, gnome-tweak-tool, fc- *). Eso no tendrá ningún efecto sobre las fuentes "rotas". Parece que la actualización de Fontconfig-Config restablece de alguna manera las referencias conocidas / almacenadas en caché a ciertas fuentes, y en su lugar se están procesando algunas fuentes alternativas, mientras que todavía se refieren a las fuentes por su nombre original.

Simplemente reinicia tu sistema, y ​​todo vuelve a la normalidad. Incluso el solo cerrar la sesión y regresar podría ser suficiente.

(*) Se suponía que esto debía ser una adición o comentario de @MDMower a la respuesta anterior, pero la "reputación" insuficiente de StackExchange me impide publicarlo como un comentario. Mi edición fue rechazada (parcialmente con razón), de ahí esta "respuesta" no deseada. Lo siento. Me alegraría si alguien con suficiente "poder" pudiera mover esta "respuesta" para que sea un comentario, donde corresponde. ¡Gracias!

    
respondido por el R. Cocinero 27.07.2018 - 12:55
-2

Una manera fácil es:

Agregue estas líneas a: /etc/apt/sources.list :

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Luego actualiza apt e install. Probablemente necesites bajar el paquete tzdata .

Después de eso, recomendaría comentar esas líneas y volver a actualizar para evitar la instalación o actualización de paquetes de ese repositorio (lo que podría generar un comportamiento inesperado).

Un problema es que debe mantener esos paquetes para que no se eliminen cuando actualiza su sistema (especialmente el paquete tzdata ).

NOTA : utilice este método como último recurso, prefiera cualquier otro que le permita actualizar sin problemas.

    
respondido por el lepe 05.12.2016 - 10:29

Lea otras preguntas en las etiquetas