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


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

Apparemment, il 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 me diriger vers des instructions sur la façon de l'installer?


108
2018-04-23 10:18


origine


Au cas où quelqu'un se demanderait pourquoi vous voudriez toujours JDK 7, je suis dans la même situation parce que jeo ne pense pas que neo4j 2.1.6 ne joue pas bien avec Ubuntu 16.04 et que la seule chose que je puisse voir est le JDK. - Sridhar-Sarnobat
Avez-vous explicitement besoin de openjdk 7 comme JVM de votre système ou avez-vous juste besoin d'un runtime Java 7? Vous pouvez télécharger ce dernier à partir des archives Oracle. - Thorbjørn Ravn Andersen


Réponses:


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   au lieu.

Au moment de la rédaction, le dernier téléchargement pour 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 ce soit la réponse la plus votée, probablement pas celle que vous voulez utiliser en 2018 en raison du manque 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  

Cela 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).


137
2018-04-23 22:34



Si vous avez installé par erreur openjdk-8 (comme je l'ai fait), après avoir suivi cette réponse, vous devrez sudo update-java-alternatives donc vous pouvez faire openjdk-7 par défaut. - Rian Sanderson
FYI: Cela ne fonctionne pas actuellement pour 16.10 - opticyclic
-1 car ce PPA est totalement obsolète et ignore de nombreux correctifs de sécurité importants. Totalement inacceptable d'avoir cela installé, imo. - gertvdijk
Aussi ne fonctionne pas pour 17.04. - Colin Harrington
-1 aussi comme le PPA suggéré est restreint et n'est pas tenu à jour. - delimiter


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

    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 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, vous devez:

    sudo apt install -f
    

    Notez 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. 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 pouvez remarquer une erreur sur le IcedTeaPlugin.so plugin étant indisponible. 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 produire quelque chose de similaire à:

    version java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-bit Server VM (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 des référentiels Debian.

  1. Créez un fichier d'épinglage qui indique apt pour 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éer un fichier /etc/apt/preferences.d/debian avec le contenu ci-dessous. Vous aurez besoin de 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 versions antérieures, ajoutez également les éléments suivants (et consultez 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 de clés Debian:

    sudo apt install debian-archive-keyring
    

    Note: bien qu'il s'agisse de la méthode la plus simple pour ajouter le trousseau de clés Debian, il se peut qu'elle ne soit pas à jour. Vérifiez la sortie comme suit lors de l'exécution 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
    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
    

    8B48AD6246925553 et 7638D0442B90D010 devrait correspondre aux pubs 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 référentiels 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. Mettre à jour apt cache (attendez-vous à ce que cela prenne du temps depuis que 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 pouvez remarquer une erreur sur le IcedTeaPlugin.so plugin étant indisponible. 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 produire quelque chose de similaire à:

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

notes fontconfig

libfontconfig1 et fontconfig-config doit être mis à niveau vers la version 2.12 ou 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 des polices laides avec ces paquets installés; par exemple. Charles Web Debugging Proxy. Selon les programmes que vous utilisez, vous pouvez ou non être affecté par ce problème.


47
2017-07-27 14:51



Réponse intéressante, veuillez la mettre à jour si vous trouvez un moyen de garder ce paquet automatiquement mis à jour. - J.Serra
J'ai juste essayé d'installer jdk 7 sur Ubuntu 16.04 et c'est la seule façon dont j'ai réussi à le faire fonctionner. Je vous remercie! - link
@ J.Serra Réponse révisée avec la méthode de mise à jour automatique. - MDMower
parfaite réponse surtout la méthode automatique est très appréciée! Merci d'avoir pris le temps de comprendre et d'écrire! - steadfasterX
La méthode automatique a surtout fonctionné pour moi, mais n'est pas entièrement 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


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.

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


5
2017-10-23 19:10





Installez Java 7 sur Ubuntu 16.04, Ubuntu 17.04

Il est recommandé d’installer Oracle Java, car il a un avantage sur la performance 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. Mettre à jour apt cache et installation oracle-java7:

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

    Au cours du processus d'installation, vous devrez accepter le Licence Oracle accord. 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 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
2018-06-26 17:17



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 - autonomy
Pour Oracle JDK, la société n’offre pas support public pour JDK 7 (ils offrent un support payant). Je pense que le apt-get tente d'obtenir le programme d'installation à partir d'une page non existante. - Si vous avez besoin du JDK 7, vous pouvez télécharger les installateurs à partir du site Web Archive: oracle.com/technetwork/java/javase/downloads/… - Jaime


Oracle JDK alternative:

Je voulais éviter les efforts avec les référentiels parce que je passe de 7, 8 et 9, alors je me suis retrouvé avec Oracle JDK plutôt qu'avec 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 cela ne signifie pas grand-chose pour moi.

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

Pour être complet, JDK version 7 était EOL'ed, même Le soutien public du JDK 8 est terminé depuis septembre 2017 et ne recevra aucune mise à jour publique après septembre 2018.


0
2017-11-19 16:58





Utiliser des conteneurs

Ceci est une réponse universellement valide sur la façon de courir <outdated> logiciel supprimé sur <current> Ubuntu: conteneuriser votre application.

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

Cela fonctionne également dans l'autre sens; essayez le logiciel sur une nouvelle distribution Linux ou même une autre 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. Voir par exemple https://docs.docker.com/install/linux/docker-ce/ubuntu/ ou utiliser le docker.io paquet dans les versions récentes d'Ubuntu expédié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 d'autres packages dans cette commande si vous en avez besoin.

  3. Dans ce dossier, exécutez:

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

    • Créer un fichier /usr/local/bin/java7-in-docker avec 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 - 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 votre Java 7 de manière transparente, comme ceci:

    java7-in-docker -jar relative/path/to/some.jar
    

0
2017-07-26 22:21





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 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!


0
2017-07-27 10:55





Un moyen facile est de:

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 tzdata paquet.

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

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

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


-2
2017-12-05 09:29