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

120

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 instrucciones sobre cómo instalarlo?

onairda
fuente
En caso de que alguien se pregunte por qué aún querría JDK 7, estoy en la misma situación porque creo que neo4j 2.1.6 no funciona bien con Ubuntu 16.04 y lo único que puedo ver que podría estar mal es el JDK.
Sridhar Sarnobat
¿Requiere explícitamente openjdk 7 como JVM de su sistema o simplemente necesita un tiempo de ejecución Java 7? Puede descargar este último de los archivos de Oracle.
Thorbjørn Ravn Andersen

Respuestas:

146

Advertencia de seguridad

Los paquetes en el PPA mencionado a continuación no se actualizan con parches de seguridad para Java. No utilizar en producción; ver respuestas alternativas en su lugar.

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


ACTUALIZACIÓN: AUNQUE ESTA ES LA RESPUESTA MÁS VOTADA, PROBABLEMENTE NO ES LA QUE USTED QUIERE UTILIZAR EN 2018 POR FALTA DE ACTUALIZACIONES DE SEGURIDAD POR 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 cargas de OpenJDK (restringido)" como un repositorio de paquetes adicional, actualiza su información e instala el paquete con sus dependencias (desde ese repositorio).

onairda
fuente
13
Si instaló erróneamente openjdk-8 primero (como lo hice), luego de seguir esta respuesta, deberá hacer una sudo update-java-alternativespara que pueda hacer que openjdk-7 sea el predeterminado.
Rian Sanderson
44
FYI: Actualmente no funciona para 16.10
opticyclic
19
-1 porque este PPA está totalmente desactualizado e ignora muchos parches de seguridad importantes. Totalmente inaceptable tener esto instalado, imo.
gertvdijk
3
Tampoco funciona para 17.04.
Colin Harrington
2
-1 también como lo sugirió el PPA está restringido y no se mantiene actualizado.
delimitador
65

Editar 22-jul-2019 : esta respuesta actualmente no funciona. Los paquetes JDK a los que se hace referencia a continuación ya no están disponibles en Debian Experimental. En cualquier caso, se quedaron atrás de los paquetes de Ubuntu Trusty que contenían actualizaciones de seguridad más recientes. Consulte las otras respuestas hasta que esto se pueda resolver (lo siento, no hay ETA).


No parece que el responsable del mantenimiento 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 el Archivo primario para Debian GNU / Linux" nos da una pista sobre cómo manejar esto nosotros mismos.

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 64 bits o i386 si está instalado Ubuntu de 32 bits)

  2. (Intente) instalar los paquetes usando dpkg:

    Ubuntu 17.10 y anterior:

    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):

    Se encontraron errores al procesar:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

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

    sudo apt install -f

    Tenga en cuenta que no es necesario volver a ejecutar dpkgdespués de permitir aptresolver las dependencias. Terminará automáticamente la instalación de los paquetes openjdk.

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

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

    Puede notar un error acerca de que el IcedTeaPlugin.socomplemento no está disponible. Esto no es una preocupación real para los desarrolladores que trabajan con el JDK.

  5. Verifique que Java esté funcionando:

    java -version

    que debería generar algo similar a:

    versión de Java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (compilación 24.161-b01, modo mixto)

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

La fijación 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 aptque solo tenga en cuenta los paquetes que nos interesan (ciertamente no queremos que toda nuestra distribución de Ubuntu se "actualice" con los paquetes experimentales de Debian).

    Cree un archivo /etc/apt/preferences.d/debiancon los siguientes contenidos. Que necesita privilegios de superusuario, por lo que utiliza 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. Instale el llavero de Debian:

    sudo apt install debian-archive-keyring

    Nota: si bien este es el método más simple para agregar el conjunto de claves de Debian, es posible que no esté actualizado. Verifique resultados como los siguientes cuando se ejecuta apt updateen el paso 4:

    W: Error de GPG: http://cdn-fastly.deb.debian.org/debian experimental InRelease: Las siguientes firmas no se pudieron verificar porque la clave pública no está disponible: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: El repositorio 'http://httpredir.debian.org/debian experimental InRelease' no está firmado.

    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
    

    dónde 8B48AD6246925553y 7638D0442B90D010deben coincidir con los pubkeys que ves 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. Actualice el aptcaché (espere que esto tome un tiempo ya que las listas de paquetes de Debian son grandes):

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

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

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

    Puede notar un error acerca de que el IcedTeaPlugin.socomplemento no está disponible. Esto no es una preocupación real para los desarrolladores que trabajan con el JDK.

  7. Verifique que Java esté funcionando:

    java -version

    que debería generar algo similar a:

    versión de Java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (compilación 24.161-b01, modo mixto)

notas de fontconfig

libfontconfig1y fontconfig-configdebe 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; por ejemplo, Proxy de depuración web de Charles. Dependiendo de los programas que use, puede verse afectado o no por este problema.

MDMower
fuente
Respuesta interesante, actualícela si encuentra una manera de mantener este paquete actualizado automáticamente.
J.Serra
Acabo de intentar instalar jdk 7 en ubuntu 16.04 y esta es la única forma en que logré que funcione. ¡Gracias!
enlace
2
@ J.Serra Respuesta revisada con método de actualización automática.
MDMower
¡Respuesta perfecta, especialmente el método automático es muy apreciado! gracias por tomarse el tiempo para averiguar y escribir!
steadfasterX
1
El método automático me funcionó principalmente, pero tampoco es del todo permanente. Tuve que agregar dos paquetes más a /etc/apt/preferences.d/debian (además de libjpeg62-turbo): libfontconfig1 y fontconfig-config
comodoro
11

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

http://www.azul.com/downloads/zulu/zulu-linux/

Thorbjørn Ravn Andersen
fuente
Esto es lo que funcionó para mí con la última versión de Ubuntu.
razvanone
0

Instalar Java 7 en Ubuntu 16.04, Ubuntu 17.04

Se recomienda instalar Oracle Java , porque tiene una ventaja de rendimiento sobre OpenJDK . Por esa razón quiero publicar una alternativa. Si desea instalar Oracle Java, ejecute los siguientes comandos en la terminal para instalarlo desde PPA.

  1. Agregue los repositorios necesarios:

    sudo add-apt-repository ppa:webupd8team/java
  2. Actualice el aptcaché e instale oracle-java7 :

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

    Durante el proceso de instalación, deberá aceptar el acuerdo de licencia de Oracle . Una vez instalado, necesitamos 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. Verifique que Java esté funcionando:

    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)
    
Teocci
fuente
3
El instalador de Oracle ya no funciona Conectando a download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... conectado. Solicitud HTTP enviada, en espera de respuesta ... 404 No encontrado
autonomía
Para Oracle JDK, la compañía no ofrece soporte público para JDK 7 (ofrecen soporte pagado). Creo que apt-getestá tratando de obtener el instalador de una página no existente. - Si necesita JDK 7, puede descargar instaladores desde el sitio web de Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime
0

Alternativa de Oracle JDK:

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

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

Para completar, JDK versión 7 fue EOL'ed, incluso el soporte público de JDK 8 se cancelará desde septiembre de 2017 y no recibirá actualizaciones públicas después de septiembre de 2018.

Ondra Žižka
fuente
0

Use contenedores

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

Por ejemplo, use Docker y una imagen base de Ubuntu anterior 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 Linux más nueva o incluso en otra en su Ubuntu estable actualmente en ejecución.

Ejemplo para Java 7 usando Ubuntu 14.04

  1. Instalar Docker: la versión gratuita de Docker CE está bien. Consulte, por ejemplo, https://docs.docker.com/install/linux/docker-ce/ubuntu/ o use el docker.iopaquete en las últimas versiones de Ubuntu enviadas.

  2. En una carpeta vacía, cree 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, ejecute:

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

    Por ejemplo 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 una envoltura para mayor comodidad.

    • Crea un archivo /usr/local/bin/java7-in-dockercon 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 todo su sistema de archivos, y suplantará su cuenta de usuario local en el espacio de nombres del contenedor.

    • Marcarlo 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
gertvdijk
fuente
14.04 ya no se mantiene a menos que pague por mantenimiento extendido (hasta 2022).
Thorbjørn Ravn Andersen
-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 actualice apt e instálelo. Probablemente necesitará degradar el tzdatapaquete.

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

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

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

lepe
fuente