Comment installer openjdk 7 sur Ubuntu 16.04 ou supérieur?

105

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

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

Quelqu'un peut-il me diriger vers des instructions sur la façon de l'installer?

    
posée onairda 23.04.2016 - 12:18
la source

8 réponses

136
  

Avertissement de sécurité

     

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

     

Au moment de l’écriture, le dernier téléchargement d’OpenJDK 7 était terminé   '2016-04-22' avec la version 7u95 et toujours disponible en tant que "dernière", où   Ubuntu 14.04 a été mis à jour à 7u181 .

MISE À JOUR: BIEN QUE C’EST LA RÉPONSE LA PLUS ÉLEVÉE QUI SOIT PROBABLEMENT PAS CELLE QUE VOUS VOULEZ UTILISER EN 2018 EN RAISON DE L’ABSENCE DE MISES À JOUR DE SÉCURITÉ PAR CE PPA.

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  

Ceci définit le "PPA pour les téléchargements OpenJDK (restreints)" comme un référentiel de package supplémentaire, met à jour vos informations et installe le package avec ses dépendances (à partir de ce référentiel).

    
réponse donnée onairda 24.04.2016 - 00:34
la source
46

Il ne semble pas que le responsable de openjdk-r / ppa mettra à jour le paquet openjdk-7 au-delà de la version 7u95-2.6.4-3. La description de ce paquet "Copié à partir de Debian Expérimental dans Primary Archive pour Debian GNU / Linux" nous donne un indice sur la manière de gérer cela nous-mêmes, cependant.

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. (Essayez de) installer les packages en utilisant dpkg :

    Ubuntu 17.10 et versions antérieures:

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

    Ubuntu 18.04 et ultérieur:

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

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

    S'il n'y avait pas de problèmes de dépendance, super, vous avez terminé, passez à # 4. Sinon, si vous avez besoin de résoudre certains problèmes de dépendance, cela est géré avec:

    sudo apt install -f
    

    Remarquez qu'il n'est pas nécessaire de relancer dpkg après avoir laissé apt résoudre les dépendances. Il terminera automatiquement l'installation des paquets openjdk.

  4. Mettez à jour les alternatives java. Vous pouvez afficher 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 concernant l’indisponibilité du plug-in IcedTeaPlugin.so . Ce n'est pas un réel problème pour les développeurs travaillant avec le JDK.

  5. Vérifiez que Java fonctionne:

    java -version
    

    qui devrait générer quelque chose de similaire à:

    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)

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 des référentiels Debian.

  1. Créez un fichier d'épinglage indiquant à apt de ne considérer 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éez le fichier /etc/apt/preferences.d/debian avec le contenu ci-dessous. Vous aurez besoin de privilèges de superutilisateur, utilisez donc un des types 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 versions antérieures, ajoutez également les éléments suivants (et reportez-vous à la remarque 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 de clés Debian:

    sudo apt install debian-archive-keyring
    

    Note: Bien que ce soit la méthode la plus simple d’ajouter le trousseau de clés Debian, il se peut qu’il ne soit pas à jour. Vérifiez la sortie comme suit lorsque vous exécutez apt update à l'étape 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 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
    

    8B48AD6246925553 et 7638D0442B90D010 doivent correspondre aux publicités 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 dépôt Debian stable? Vous rencontrerez des dépendances insatisfaisantes avec Debian stable. Les dépôts expérimentaux (pour openjdk-7) et sid (pour libjpeg62-turbo, libfontconfig1 et fontconfig-config) sont plus cléments avec les versions de dépendance.

  4. Mettez à jour le cache apt (attendez-vous à ce que cela prenne un certain temps depuis que les listes de paquets Debian sont grandes):

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

    sudo apt install openjdk-7-jdk
    
  6. Mettez à jour les alternatives java. Vous pouvez afficher 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 concernant l’indisponibilité du plug-in IcedTeaPlugin.so . Ce n'est pas un réel problème pour les développeurs travaillant avec le JDK.

  7. Vérifiez que Java fonctionne:

    java -version
    

    qui devrait générer quelque chose de similaire à:

    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)

Remarques sur fontconfig

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

    
réponse donnée MDMower 27.07.2016 - 16:51
la source
5

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

lien

    
réponse donnée Thorbjørn Ravn Andersen 23.10.2016 - 21:10
la source
0

Installez Java 7 sur Ubuntu 16.04, Ubuntu 17.04

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

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

    sudo add-apt-repository ppa:webupd8team/java
    
  2. Mettez à jour le cache apt et installez oracle-java7 :

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

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

    .
  3. Corriger 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 générer 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)
    
réponse donnée Teocci 26.06.2017 - 19:17
la source
0

Alternative à JDK Oracle:

Je voulais éviter les efforts avec les référentiels car je passe de 7, 8 et 9, alors je me suis retrouvé avec Oracle JDK plutôt qu’OpenJDK. Téléchargé depuis le site officiel . Je ne suis pas sûr que la dernière version 80 contienne les mêmes correctifs que la version 161. OpenJDK. Mais je l'ai pour le développement, donc ça ne veut pas dire grand chose pour moi.

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

Pour être complet, JDK version 7 a été EOL'ed, même JDK 8 support public est être résilié depuis septembre 2017 et ne recevra aucune mise à jour publique après septembre 2018.

    
réponse donnée Ondra Žižka 19.11.2017 - 17:58
la source
0

Utiliser des conteneurs

Ceci est une réponse universelle sur la façon d’exécuter le logiciel <outdated> supprimé sur <current> Ubuntu: conteneurise 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 également dans l'autre sens. essayez le logiciel sur une distribution Linux nouvelle ou même différente sur votre Ubuntu stable en cours d’exécution.

Exemple pour Java 7 en utilisant Ubuntu 14.04

  1. Installer Docker - La version gratuite de Docker CE convient. Consultez par exemple lien ou utilisez le package docker.io dans les versions récentes d'Ubuntu fournies.

  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, exécutez:

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

    E.g. 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. Si vous le souhaitez, créez un wrapper pour plus de commodité.

    • Créez un fichier /usr/local/bin/java7-in-docker avec 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}" \
        [email protected]
      

      Cela rendra le répertoire de travail actuel disponible dans le conteneur - pas votre système de fichiers entier, et il 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 Java 7 de manière transparente, comme ceci:

    java7-in-docker -jar relative/path/to/some.jar
    
réponse donnée gertvdijk 27.07.2018 - 00:21
la source
0

Un ajout à la réponse de MDMower ci-dessus à propos de l'installation manuelle ou automatique. (*)

Sur Ubuntu 16.04.5 LTS avec les noyaux hwe-16.04-edge et Cinnamon en tant que DE, j'ai eu un comportement de police inattendu lors de l'installation / mise à niveau de libfontconfig1 et de sa dépendance fontconfig-config. Tout à coup, j'ai eu des polices mono-espace étranges et minces et à peine lisibles et d'autres polices "laides" dans les barres de menus de nombreuses applications, ainsi que dans les fenêtres de terminal et de nombreux autres endroits de mes applications.

Au cas où vous rencontreriez ce problème: il ne semble pas y avoir de correctif fonctionnel à l'exécution pour cela. Inutile de perdre votre temps à chercher un paramètre à corriger dans les préférences de Cinnamon ou de Gnome ou de FontConfig ou de votre terminal (par exemple, gconf-editor / gconftool, gnome-tweak-tool, fc- *). Cela n'aura aucun effet sur les polices "cassées". Il semble que la mise à jour de Fontconfig-Config réinitialise en quelque sorte les références connues / en cache à certaines polices, et certaines polices de secours sont restituées à la place, tout en faisant toujours référence aux polices par leur nom d'origine.

Redémarrez simplement votre système et tout redevient normal. Même se déconnecter et revenir pourrait suffire.

(*) C'était supposé être un ajout ou un commentaire à la réponse de @MDMower, mais la "réputation" de StackExchange ne m'empêche pas de la publier en tant que commentaire. Mon édition a été rejetée (en partie à juste titre), d'où cette réponse "spammée" à la place. Pardon. Je serais heureux si quelqu'un avec assez de "pouvoir" pourrait déplacer cette "réponse" pour être un commentaire, où il appartient. Merci!

    
réponse donnée R. Cocinero 27.07.2018 - 12:55
la source
-2

Un moyen simple 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

Ensuite, mettez à jour apt et installez. Vous aurez probablement besoin de rétrograder le paquet tzdata .

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

L'un des problèmes est que vous devez conserver ces paquets afin qu'ils ne soient pas supprimés lorsque vous mettez à jour votre système (spécialement tzdata package).

REMARQUE : utilisez cette méthode en dernier recours, préférez toute autre méthode qui vous permettra de mettre à jour sans problème.

    
réponse donnée lepe 05.12.2016 - 10:29
la source

Lire d'autres questions sur les étiquettes