Comment installer openjdk 7 sur Ubuntu 16.04 ou une version ultérieure?

120

Je souhaite mettre à niveau mon système principal vers 16.04, mais je travaille sur des projets nécessitant OpenJDK 7.

Apparemment, ce n'est pas disponible à partir d'un trivial apt-get install openjdk-7-jdk. Seules les versions 8 et 9 sont répertoriées dans le référentiel.

Quelqu'un peut-il m'indiquer des instructions sur la façon de l'installer?

onairda
la source
Au cas où quelqu'un se demanderait pourquoi vous voulez toujours utiliser JDK 7, je suis dans la même situation car je pense que neo4j 2.1.6 ne fonctionne pas bien avec Ubuntu 16.04 et que la seule chose que je peux voir qui pourrait être erronée est le JDK.
Sridhar Sarnobat
Avez-vous explicitement besoin d’openjdk 7 en tant que machine virtuelle Java ou avez-vous simplement besoin d’un environnement d’exécution Java 7? Vous pouvez télécharger ce dernier à partir des archives Oracle.
Thorbjørn Ravn Andersen

Réponses:

146

Avertissement de sécurité

Les packages du PPA mentionné ci-dessous ne sont pas mis à jour avec les correctifs de sécurité pour Java. Ne pas utiliser dans la production; voir des réponses alternatives à la place.

Au moment de la rédaction de cet article, le dernier téléchargement pour OpenJDK 7 était "2016-04-22" avec la version 7u95 et toujours disponible en tant que "dernière", Ubuntu 14.04 ayant été mis à jour en 7u181 .


MISE À JOUR: BIEN QUE C’EST LA RÉPONSE LA PLUS ÉCHOTÉE, C’EST SANS PROBABLEMENT CELLE QUE VOUS VOULEZ UTILISER EN 2018 EN RAISON DE L’ABS DE MISE À JOUR DE SÉCURITÉ PAR CET APP.

J'ai trouvé les instructions suivantes qui ont fonctionné pour moi:

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

Cela définit «PPA pour les téléchargements OpenJDK (restreint)» en tant que référentiel de packages supplémentaire, met à jour vos informations et installe le package avec ses dépendances (à partir de ce référentiel).

onairda
la source
13
Si vous avez d'abord installé par erreur openjdk-8 (comme je l'ai fait), vous devrez effectuer cette opération après avoir suivi cette réponse sudo update-java-alternativesafin que vous puissiez faire de openjdk-7 la valeur par défaut.
Rian Sanderson
4
FYI: Cela ne marche pas pour
16h10
19
-1 parce que ce PPA est totalement obsolète et ignore de nombreux correctifs de sécurité importants. Totalement inacceptable de l'avoir installé, imo.
gertvdijk
3
Aussi ne fonctionne pas pour 17.04.
Colin Harrington
2
-1 également comme le PPA suggéré est restreint et n'est pas tenu à jour.
Délimiteur
65

22 juillet 2019 : Cette réponse ne fonctionne pas pour le moment. Les paquets JDK référencés ci-dessous ne sont plus disponibles sous Debian Experimental. En tout état de cause, ils étaient à la traîne par rapport aux packages d'Ubuntu Trusty, qui contenaient des mises à jour de sécurité plus récentes. Veuillez vous reporter aux autres réponses jusqu'à ce que cela puisse être résolu (désolé, pas d'ETA).


Il ne semble pas que le responsable de openjdk-r / ppa mette à jour le paquet openjdk-7 au-delà de la version 7u95-2.6.4-3. La description de ce paquet "Copié à partir de expérimental debian dans Archive primaire pour Debian GNU / Linux" nous donne cependant un indice sur la façon de gérer cela nous-mêmes.

Option 1: Installation manuelle

  1. Téléchargez les packages destinés à votre architecture:
    (pour la plupart des utilisateurs, cela signifie amd64 si 64 bits ou i386 si Ubuntu 32 bits est installé)

  2. (Essayer de) installer les paquets en utilisant dpkg:

    Ubuntu 17.10 et versions antérieures:

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

    Ubuntu 18.04 et plus tard:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Vérifiez la sortie de dpkg. S'il y avait des problèmes de dépendance - ce qui est probable -, vous verrez ce qui suit (avec votre architecture remplacée par amd64):

    Des erreurs ont été rencontrées lors du traitement:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

    S'il n'y a pas eu de problèmes de dépendance, tant mieux, c'est fini, passez à l'étape 4. Sinon, si vous avez besoin de résoudre certains problèmes de dépendance, ceci est traité avec:

    sudo apt install -f

    Notez qu'il n'est pas nécessaire de réexécuter l'exécution dpkgaprès avoir aptrésolu les dépendances. Il va automatiquement terminer l'installation des paquets openjdk.

  4. Mettre à jour les alternatives Java. Vous pouvez voir toutes les versions de Java installées avec update-java-alternatives --list. Pour activer OpenJDK Java 1.7, exécutez:

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

    Vous remarquerez peut-être une erreur indiquant que le IcedTeaPlugin.soplug - in est indisponible. Ce n'est pas un problème pour les développeurs qui travaillent avec le JDK.

  5. Vérifiez que Java fonctionne:

    java -version

    qui devrait produire quelque chose de similaire à:

    version java "1.7.0_161"
    Environnement d'exécution OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    Ordinateur virtuel serveur OpenJDK 64 bits (version 24.161-b01, mode mixte)

Option 2: Installation automatique (y compris les mises à jour avec apt)

Pinning peut être utilisé pour installer et mettre à jour openjdk-7-jdk et ses dépendances à partir de référentiels Debian.

  1. Créez un fichier d'identification qui aptne prenne en compte que les paquets qui nous intéressent (nous ne voulons certainement pas que toute notre distribution Ubuntu soit "mise à niveau" avec les paquets expérimentaux Debian).

    Créer un fichier /etc/apt/preferences.d/debianavec le contenu ci-dessous. Vous aurez besoin de privilèges de super - utilisateur, utilisez donc l' un des 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
    

    Pour Ubuntu 17.10 et les versions antérieures, ajoutez également les éléments suivants (et voir la note en bas):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Installez le trousseau Debian:

    sudo apt install debian-archive-keyring

    Remarque: bien qu’il s’agisse de la méthode la plus simple d’ajout du trousseau de clés debian, elle peut ne pas être à jour. Recherchez les résultats suivants lors de l'exécution apt updatede l'étape 4:

    W: erreur GPG: http://cdn-fastly.deb.debian.org/debian expérimentale InRelease: les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Le référentiel 'http://httpredir.debian.org/debian experimental InRelease' n'est pas signé.

    Si vous voyez cette erreur, ajoutez manuellement les clés nécessaires avec:

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

    8B48AD6246925553et 7638D0442B90D010doit correspondre aux mots clés publics que vous voyez dans le message d'avertissement.

  3. Ajoutez les référentiels nécessaires:

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

    Pourquoi ne pas utiliser un référentiel Debian stable? Vous rencontrerez des dépendances insatisfiables avec Debian stable. Les référentiels expérimental (pour openjdk-7) et sid (pour libjpeg62-turbo, libfontconfig1 et fontconfig-config) sont plus cléments avec les versions de dépendance.

  4. Mettre à jour le aptcache (cela devrait prendre un certain temps puisque les listes de paquets de Debian sont grandes):

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

    sudo apt install openjdk-7-jdk
  6. Mettre à jour les alternatives Java. Vous pouvez voir toutes les versions de Java installées avec update-java-alternatives --list. Pour activer OpenJDK Java 1.7, exécutez:

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

    Vous remarquerez peut-être une erreur indiquant que le IcedTeaPlugin.soplug - in est indisponible. Ce n'est pas un problème pour les développeurs qui travaillent avec le JDK.

  7. Vérifiez que Java fonctionne:

    java -version

    qui devrait produire quelque chose de similaire à:

    version java "1.7.0_161"
    Environnement d'exécution OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    Ordinateur virtuel serveur OpenJDK 64 bits (version 24.161-b01, mode mixte)

notes de fontconfig

libfontconfig1et fontconfig-configdoit être mis à niveau vers la version 2.12 ou ultérieure sur Ubuntu 17.10 et les versions antérieures. Les packages de mise à jour de Debian ne contiennent pas les personnalisations d'Ubuntu. Certaines applications affichent donc des polices laides avec ces packages installés. par exemple Charles Web Debugging Proxy. Selon les programmes que vous utilisez, vous pouvez être affecté ou non par ce problème.

MDMower
la source
Réponse intéressante, veuillez le mettre à jour si vous trouvez un moyen de garder ce paquet automatiquement mis à jour.
J.Serra
Je viens d'essayer d'installer jdk 7 sur Ubuntu 16.04 et c'est la seule façon pour moi de le faire fonctionner. Je vous remercie!
lien
2
@ J.Serra Réponse révisée avec méthode de mise à jour automatique.
MDMower
réponse parfaite surtout la méthode automatique est très appréciée! merci de prendre le temps de comprendre et d'écrire!
steadfasterX
1
La méthode automatique a principalement fonctionné pour moi, mais elle n’est pas totalement permanente non plus. J'ai dû ajouter deux paquets supplémentaires à /etc/apt/preferences.d/debian (en plus de libjpeg62-turbo): libfontconfig1 et fontconfig-config
comodoro
11

Vous pouvez télécharger un OpenJDK 7 d’Azul qui convient à vos besoins. Ils ont tous deux une distribution DEB (pour le système de paquet) et une distribution ZIP. J'ai uniquement travaillé avec la distribution ZIP.

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

Thorbjørn Ravn Andersen
la source
C'est ce qui a fonctionné pour moi avec la dernière version d'Ubuntu.
razvanone
0

Installer Java 7 sur Ubuntu 16.04, Ubuntu 17.04

Il est recommandé d'installer Oracle Java , car il présente un avantage en termes de performances par rapport à OpenJDK . Pour cette raison, je veux poster une alternative. Si vous souhaitez installer Oracle Java, exécutez les commandes suivantes dans Terminal pour l’installer à partir de PPA.

  1. Ajoutez les référentiels nécessaires:

    sudo add-apt-repository ppa:webupd8team/java
  2. Mettre à jour le aptcache et installer oracle-java7 :

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

    Au cours du processus d'installation, vous devrez accepter le contrat de licence Oracle . Une fois installé, nous devons définir des variables d’environnement Java telles que JAVA_HOME.

  3. Corrigez les variables d'environnement Java.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Vérifiez que Java fonctionne:

    java -version

    qui devrait produire quelque chose de similaire à:

    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
la source
3
Le programme d'installation d'Oracle ne fonctionne plus. Connexion à download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... connecté. Requête HTTP envoyée, en attente de réponse ... 404 Introuvable
Autonomie
Pour Oracle JDK, la société n'offre pas de support public pour JDK 7 (ils offrent un support payant). Je pense que le apt-gettente d'obtenir le programme d'installation à partir d'une page inexistante. - Si vous avez besoin de JDK 7, vous pouvez télécharger les programmes d'installation à partir du site Web d'Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime
0

Oracle JDK alternative:

Je voulais éviter l'effort avec les référentiels parce que je basculais entre 7, 8 et 9, alors je me suis retrouvé avec Oracle JDK plutôt que OpenJDK. Téléchargé sur le site officiel . Je ne suis pas sûr de savoir si la dernière version 80 contient les mêmes correctifs que la version 161 d'OpenJDK. Mais je l'ai pour le développement, ce qui ne veut pas dire grand chose pour moi en tout cas.

Ensuite, vous devez définir $JAVA_HOMEl'environnement afin que différents scripts récupèrent le bon JDK (par exemple, Maven, JBoss, etc.).

Pour être complet, la version 7 de JDK a été supprimée. Même le support public de JDK 8 prend fin depuis septembre 2017 et ne recevra aucune mise à jour publique après septembre 2018.

Ondra Žižka
la source
0

Utiliser des conteneurs

C’est une réponse universellement valable sur la façon d’exécuter un <outdated>logiciel supprimé sur <current>Ubuntu: conteneurisez votre application .

Par exemple, utilisez Docker et une image de base Ubuntu plus ancienne dans laquelle le logiciel que vous recherchez est toujours disponible / maintenu.

Cela fonctionne aussi dans l'autre sens. essayez le logiciel sur une distribution plus récente, voire une autre, de Linux sur votre Ubuntu stable en cours d'exécution.

Exemple pour Java 7 sous Ubuntu 14.04

  1. Installer Docker - La version gratuite de Docker CE convient. Voir par exemple https://docs.docker.com/install/linux/docker-ce/ubuntu/ ou utilisez le docker.iopaquet dans les versions récentes d'Ubuntu livrées.

  2. Dans un dossier vide, créez un fichier 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"]
    

    Ajoutez plus de paquets dans cette commande si vous en avez besoin.

  3. Dans ce dossier, lancez:

    docker build -t gertvdijk/java7 .
  4. Exécutez une commande dans un conteneur à usage unique en utilisant cette image Java 7:

    Par exemple java -version:

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

    Sortie:

    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. Vous pouvez éventuellement créer une enveloppe pour plus de commodité.

    • Créez un fichier /usr/local/bin/java7-in-dockeravec le contenu:

      #!/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}" \
        $@
      

      Cela rendra le répertoire de travail actuel disponible dans le conteneur, et non votre système de fichiers complet, et empruntera l'identité de votre compte d'utilisateur local dans l'espace de noms du conteneur.

    • Marquez-le comme exécutable:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Exécutez votre Java 7 de manière transparente, comme ceci:

    java7-in-docker -jar relative/path/to/some.jar
Gertvdijk
la source
14.04 n'est plus entretenu que si vous payez pour un entretien prolongé (jusqu'en 2022).
Thorbjørn Ravn Andersen
-2

Un moyen facile est:

Ajoutez ces lignes à /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

Puis mettez à jour apt et installez. Vous aurez probablement besoin de déclasser le tzdatapaquet.

Après cela, je recommanderais de commenter ces lignes et apt update à nouveau pour empêcher l’installation ou la mise à jour des paquetages à partir de ce référentiel (ce qui pourrait entraîner un comportement inattendu).

Un problème est que vous devez conserver ces packages pour qu'ils ne soient pas supprimés lorsque vous mettez à jour votre système (spécialement les tzdatapackages).

REMARQUE : Utilisez cette méthode en dernier recours, préférez toute autre solution vous permettant de mettre à jour sans problèmes.

lepe
la source