web-dev-qa-db-fra.com

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

Je souhaite mettre à niveau mon système principal vers 16.04, mais je travaille sur des projets nécessitant 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 m'indiquer des instructions sur la façon de l'installer?

118
onairda

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", où Ubuntu 14.04 a été mise à jour vers 7u181 .


MISE À JOUR: MÊME CECI IS LA RÉPONSE LA PLUS ÉLUMENT ADOPTÉE N'AURAIT PROBABLEMENT PAS CELLE QUE VOUS VOULEZ UTILISER EN 2018 EN RAISON DE L'ABS DE MISE À JOUR DE LA 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).

145
onairda

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. Essayez d’installer les packages à l’aide de dpkgname__:

    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 dpkgname__. S'il y avait des problèmes de dépendance - ce qui est probable - vous verrez ceci (avec votre architecture remplacée par AMD64):

    Des erreurs se sont produites 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 dpkgaprès avoir laissé aptrésoudre les dépendances. Il va automatiquement terminer l'installation des paquets openjdk.

  4. Mettez à jour les alternatives Java. Vous pouvez afficher toutes les versions 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 plug-in IcedTeaPlugin.so 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) 
     Serveur OpenJDK 64 bits VM (version 24.161 -b01, mode mixte)

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

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'épinglage qui indique à aptde ne considérer que les paquets qui nous intéressent (nous ne voulons certainement pas que toute notre distribution Ubuntu soit "mise à jour" avec les paquets expérimentaux Debian).

    Créez le fichier /etc/apt/preferences.d/debian avec le contenu ci-dessous. Vous aurez besoin des privilèges de superutilisateur, 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 une sortie comme celle-ci lors de l'exécution de apt update à l'étape 4:

    W: erreur GPG: http://cdn-fastly.deb.debian.org/debian experimental 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 
    . 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
    

    8B48AD6246925553 et 7638D0442B90D010 doivent 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 non satisfaisantes 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. Mettez à jour le cache apt(attendez-vous à cela car les listes de paquets de Debian sont longues):

    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 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 plug-in IcedTeaPlugin.so 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) 
     Serveur OpenJDK 64 bits VM (version 24.161 -b01, mode mixte)

fontconfig notes

libfontconfig1 et fontconfig-config doivent ê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.

64
MDMower

Vous pouvez télécharger un OpenJDK 7 d’Azul qui convient à vos besoins. Ils ont tous les deux un 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/

Utiliser des conteneurs

Ceci est une réponse universellement valable 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 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 paquetage docker.io 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 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}" \
        $@
      

      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
    
0
gertvdijk

Installez Java 7 sur Ubuntu 16.04, Ubuntu 17.04

Il est recommandé d’installer Oracle Java, car il dispose d’un Edge de performance supérieur à 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. 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 le contrat licence Oracle. Une fois installé, vous devez définir Java variables d’environnement 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)
    
0
Teocci

Un ajout à la réponse de MDMower ci-dessus concernant 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 rencontré un comportement de police inattendu lors de l'installation/de la mise à niveau de libfontconfig1 et de sa dépendance fontconfig-config. Soudain, j’avais des polices mono-espace étranges, minces et à peine lisibles, ainsi que d’autres polices "laides" dans les barres de menus de nombreuses applications, ainsi que dans les fenêtres des terminaux et dans de nombreux autres endroits de mes applications.

Si vous rencontrez ce problème: Il ne semble pas y avoir de solution de travail au moment de l’exécution pour cela. Inutile de perdre votre temps à chercher un paramètre à corriger dans les préférences de Cinnamon, Gnome, FontConfig ou 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 d'une manière ou d'une autre les références connues/mises en cache de certaines polices, et que certaines polices de remplacement sont rendues à la place, tout en faisant référence aux polices par leur nom d'origine.

Redémarrez simplement votre système et tout est revenu à la normale. Même se déconnecter et revenir pourrait suffire.


(*) Cela devait être un ajout ou un commentaire à la réponse ci-dessus de @MDMower, mais la "réputation" StackExchange insuffisante m'empêche de l'afficher sous forme de commentaire. Mon édition a également été rejetée (partiellement à juste titre), d'où cette "réponse" spammée. Pardon. Je serais heureux si quelqu'un avec suffisamment de "pouvoir" pouvait déplacer cette "réponse" pour qu'elle soit un commentaire, là où elle appartient. Merci!

0
R. Cocinero

Alternative JDK Oracle:

Je voulais éviter l'effort avec les référentiels car je basculais entre 7, 8 et 9, alors je me suis retrouvé avec Oracle JDK plutôt qu'OpenJDK. Téléchargé de 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_HOME dans l'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 l’assistance publique de JDK 8 prend fin depuis septembre 2017 et ne recevra aucune mise à jour publique après septembre 2018.

0
Ondra Žižka