55
votes

Comment installer openjdk-8-jdk sur Debian 10 (Buster)?

Il semble que Debian ne prend plus en charge openjdk-8-jdk en raison d'un problème de sécurité. Quelle est la manière la plus simple d'installer openjdk-8-jdk pour Debian 10 (Buster)?


9 Réponses :


33
votes

J'ai trouvé cette voie. Ajoutez dans your sources.list :

sudo update-alternatives --config java

Le repo suivant:

sudo apt-get install openjdk-8-jdk

Ensuite:

sudo apt-get update

Dernier:

deb http://ftp.us.debian.org/debian sid main

Etapes supplémentaires:

sudo vim /etc/apt/sources.list

Choisissez votre version java.

https://packages.debian.org/sid/openjdk-8-jdk


6 commentaires

A travaillé pour moi avec l'image docker Debian buster .


1154 packages can be upgraded. Run 'apt list --upgradable' to see them. Cela migre toute l'installation vers Sid


Cela importe la branche instable de debian dans la branche stable. Utilisez ces conseils avec précaution.


l'ajout de sid / unstable à une distribution stable est un AntiPattern communément appelé FrankeDebian: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian


Cela a fonctionné pour moi, je viens d'avoir un conflit dans libc6-dev, je l'ai corrigé avec apt install -y libc6-dev:amd64=2.30-8


Cela fonctionne jusqu'à ce qu'il interrompe votre mise à jour Debian de manière imprévue et difficile à déboguer. C'est juste un conseil terrible.



10
votes

Vous pouvez rechercher le site des paquets Debian et découvrir que le openjdk-8-jdk pour Debian 10 n'est actuellement disponible qu'à partir du dépôt unstable (Sid).

Au début, il est bon de vérifier et d'enregistrer les liens symboliques actuels à l'échelle du système pour les packages Java SDK / JRE déjà installés, le cas échéant:

ls -la /etc/alternatives | grep java-8

Vérifiez ensuite si ce package peut être installé avec la configuration actuelle:

apt install openjdk-8-jdk

Si non, vous devez ajouter un référentiel instable à la liste des sources. La sortie négative peut impliquer que vous préférez utiliser des référentiels stables et il n'est généralement pas approprié pour vous de mettre à jour tous les autres logiciels à partir de référentiels instables. Donc, avant d'ajouter un référentiel instable à la liste des sources, assurez-vous que l'option de configuration APT::Default-Release est définie sur "stable" :

apt-cache policy openjdk-8-jdk

Si non (comme par défaut), définissez-le comme recommandé dans cette réponse en créant ce fichier:

/etc/apt/apt.conf.d/99defaultrelease

apt list --upgradable

Vous êtes maintenant prêt à ajouter le référentiel instable à la liste des sources. Avant, je préfère vérifier quel miroir a été sélectionné par moi lors de l'installation du système. Regardez simplement la liste des sources principales:

apt update

Dans mon cas, la sortie montre que le serveur mirror.yandex.ru est utilisé comme source système. J'utilise donc la même chose pour les instables et ajoute ce fichier:

/etc/apt/sources.list.d/91-debian-unstable.list

deb http://mirror.yandex.ru/debian/ unstable main
deb-src http://mirror.yandex.ru/debian/ unstable main

(J'ai aussi un fichier 90-debian-testing.list pour le dépôt testing.)

Ensuite, mettez à jour les listes de packages:

cat /etc/apt/sources.list

Et vérifiez que votre système ne se mettra pas à jour à partir de sources instables:

APT::Default-Release "stable";

Et revérifier si le package requis peut être installé:

grep -r Default-Release /etc/apt/

Installez le package:

apt-cache policy openjdk-8-jdk

Regardez les nouveaux liens symboliques:

ls -la /etc/alternatives | grep java > previous-java-alternatives.txt

Perdez juste quelques secondes dessus (ou continuez avec man 1 update-alternatives ).


4 commentaires

Cela ne fonctionne (plus?), À cause de la version instable en cours de compilation avec une version de libc6 qui est en conflit avec la distribution stable.


Même quand il y a une bonne intention derrière APT::Default-Release "stable"; , son utilisation ne permet pas de terminer l'installation du JDK 8 avec apt install openjdk-8-jdk .


Cet AntiPattern est communément appelé "FrankenDebian" . Cela conduit à un certain nombre de problèmes de mise à niveau / d'installation


Maintenant, openjdk-8-jdk est disponible dans le référentiel stretch . Voir ma réponse



-1
votes

J'étais en train de migrer de Jessie vers Buster et j'ai découvert que le code hérité pas si ancien ne se compilerait pas et ne fonctionnerait pas sur JDK11.

J'ai réussi à copier tous les dossiers java8 de ma distribution Jessie, retravaillé les liens et défini cela comme un nouveau JDK sur Eclipse. Cela fonctionne jusqu'à présent.


0 commentaires

-4
votes

le moyen le plus simple que j'ai trouvé pour télécharger java 8 sur debian buster est d'utiliser la commande su apt-get install openjdk-8-jdk


0 commentaires

61
votes

Vous pouvez également utiliser le référentiel adoptopenjdk:

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -

sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

sudo apt-get update && sudo apt-get install adoptopenjdk-8-hotspot

https://adoptopenjdk.net/installation.html


7 commentaires

C'est la seule solution qui semble fonctionner pour moi, étant donné l'état actuel de la version instable de Debian de opensdk-8.


meilleure réponse, simple et pratique.


Incroyable combien de recherches sur Google et de défilement étaient nécessaires pour arriver ici. C'est la seule réponse valable.


Certaines installations ne pourront pas s'installer si elles ne trouvent pas openjdk-8-jdk d'Oracle. Voici un simple package virtuel qui "fournit" le package manquant via AdoptOpenJDK: gitlab.com/b8kich/adopt-openjdk-8-jdk/- / blob / master / ... Après avoir installé adoptopenjdk-8-hotspot, téléchargez le fichier .deb et installer en utilisant dpkg -i adopt-openjdk-8-jdk_0.1_all.deb


Si vous installez openjdk-8 en python:3.7-buster image Docker python:3.7-buster vous devez ajouter la commande mkdir -p /usr/share/man/man1/


Après avoir suivi les instructions des articles, la variable JAVA_HOME est / usr / lib / jvm / adoptopenjdk-8-hotspot-amd64 / jre /, pour tous ceux qui recherchent ...


pour ceux qui obtiennent une erreur sur la deuxième commande "add-apt-repository: command not found", essayez cette étape supplémentaire après le premier sudo apt-get install software-properties-common



1
votes

J'avais besoin d'installer une version 32 bits, mais ce n'était pas disponible chez adoptopenjdk pour autant que je puisse le voir. J'ai retrouvé une copie d'un binaire sur java.com dans leur zone de téléchargement:

export PATH=$PATH:/home/youruserid/java/jre1.8.0_241/bin

Tout ce dont j'avais besoin était le JRE (plutôt qu'un JDK, mais le processus devrait être le même pour l'un ou l'autre) et comme c'était aussi pour un usage personnel uniquement, le binaire Oracle était OK (ils ont des limitations à cet égard).

J'ai téléchargé le binaire et l'ai placé dans le dossier personnel (~ /) de l'utilisateur qui avait besoin de l'exécuter, puis je l'ai décompressé comme suit:

mkdir ~/java && cd ~/java && tar -xf jre-8u241-linux-i586.tar.gz

Puis ajouté l'emplacement au chemin de l'utilisateur qui exécuterait l'application Java en ajoutant cette ligne à ~ / .profile:

jre-8u241-linux-i586.tar.gz

Cela a bien fonctionné pour mon cas, mais il existe sans aucun doute de meilleures façons d'installer un binaire. Par exemple, il est disponible pour tous les utilisateurs Unix plutôt que pour un seul.


0 commentaires

24
votes

Étapes de recherche du miroir de package:
  1. Dans les répertoires du package de recherche , recherchez openjdk-8-jdk . Vous pouvez voir deux résultats:

  2. Choisissez le référentiel extensible

  3. Faites défiler jusqu'à la section Télécharger openjdk-8-jdk et choisissez votre architecture. Par exemple amd64
  4. Vous pouvez maintenant voir la liste des miroirs et les instructions pour installer le paquet via apt:

    Vous devriez pouvoir utiliser n'importe lequel des miroirs listés en ajoutant une ligne à votre /etc/apt/sources.list comme ceci:

    deb http://security.debian.org/debian-security stretch / updates main

Etapes d'installation:

  1. Installer le gestionnaire de sources de logiciels

    apt-get install openjdk-8-jdk
    
  2. Ajouter un miroir avec openjdk-8-jdk

    apt-add-repository 'deb http://security.debian.org/debian-security stretch/updates main'
    apt-get update
    
  3. Installez openjdk 8

    apt-get update
    apt-get install software-properties-common
    

Remarque: vous pouvez utiliser les étapes ci-dessus pour trouver un miroir Debian officiel avec tout autre paquet que vous souhaitez installer


0 commentaires

3
votes

C'est mon script que j'utilise pour installer OpenJDK 8 sur l'image Docker Pipelines de Bitbucket NodeJS 10.16.2. Mais maintenant je vois que cette image de docker est basée sur Stretch ...

Il est basé sur https://github.com/docker-library/openjdk/blob/89851f0abc3a83cfad5248102f379d6a0bd3951a/8-jdk/Dockerfile

#!/bin/bash
set -x #echo on
# based on https://github.com/docker-library/openjdk/blob/89851f0abc3a83cfad5248102f379d6a0bd3951a/8-jdk/Dockerfile

apt-get update && apt-get install -y --no-install-recommends \
  bzip2 \
  unzip \
  xz-utils &&
  rm -rf /var/lib/apt/lists/*

echo 'deb http://httpredir.debian.org/debian-security stretch/updates main' >/etc/apt/sources.list.d/jessie-backports.list

# Default to UTF-8 file.encoding
export LANG=C.UTF-8

# add a simple script that can auto-detect the appropriate JAVA_HOME value
# based on whether the JDK or only the JRE is installed
{ \
    echo '#!/bin/sh'; \
    echo 'set -e'; \
    echo; \
    echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
} > /usr/local/bin/docker-java-home \
&& chmod +x /usr/local/bin/docker-java-home

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_VERSION=8u265
export JAVA_DEBIAN_VERSION=8u265-b01-0+deb9u1

# see https://bugs.debian.org/775775
# and https://github.com/docker-library/java/issues/19#issuecomment-70546872
export CA_CERTIFICATES_JAVA_VERSION=20170929~deb9u3

set -x \
    && apt-get update \
    && apt-get install -y \
        openjdk-8-jdk="$JAVA_DEBIAN_VERSION" \
        ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \
    && rm -rf /var/lib/apt/lists/* \
    && [ "$JAVA_HOME" = "$(docker-java-home)" ]

# see CA_CERTIFICATES_JAVA_VERSION notes above
/var/lib/dpkg/info/ca-certificates-java.postinst configure

MISE À JOUR

Les choses changent, les versions sont augmentées. Voici le dernier script qui fonctionne pour https://hub.docker.com/layers/node/library/node/10.16.2/images/sha256-8f420c033acee137f9e902092a04d371bdf1f839559cce60614c0d5905d20294?context=explore

#!/bin/bash
set -x #echo on
# based on https://github.com/docker-library/openjdk/blob/89851f0abc3a83cfad5248102f379d6a0bd3951a/8-jdk/Dockerfile

apt-get update && apt-get install -y --no-install-recommends \
  bzip2 \
  unzip \
  xz-utils &&
  rm -rf /var/lib/apt/lists/*

echo 'deb http://httpredir.debian.org/debian-security stretch/updates main' >/etc/apt/sources.list.d/jessie-backports.list

# Default to UTF-8 file.encoding
export LANG=C.UTF-8

# add a simple script that can auto-detect the appropriate JAVA_HOME value
# based on whether the JDK or only the JRE is installed
{ \
    echo '#!/bin/sh'; \
    echo 'set -e'; \
    echo; \
    echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
} > /usr/local/bin/docker-java-home \
&& chmod +x /usr/local/bin/docker-java-home

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_VERSION=8u252
export JAVA_DEBIAN_VERSION=8u252-b09-1~deb9u1

# see https://bugs.debian.org/775775
# and https://github.com/docker-library/java/issues/19#issuecomment-70546872
export CA_CERTIFICATES_JAVA_VERSION=20170929~deb9u3

set -x \
    && apt-get update \
    && apt-get install -y \
        openjdk-8-jdk="$JAVA_DEBIAN_VERSION" \
        ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \
    && rm -rf /var/lib/apt/lists/* \
    && [ "$JAVA_HOME" = "$(docker-java-home)" ]

# see CA_CERTIFICATES_JAVA_VERSION notes above
/var/lib/dpkg/info/ca-certificates-java.postinst configure


0 commentaires

0
votes

Le moyen le plus simple d'installer JDK8 consiste à utiliser SDKMAN .

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk install java 8.0.275.hs-adpt


0 commentaires