如何在Debian 10(Buster)上安装openjdk-8-jdk?

时间:2019-07-14 22:37:11

标签: java java-8 debian

由于安全问题,Debian似乎不再支持openjdk-8-jdk。为Debian 10(Buster)安装openjdk-8-jdk的最简单方法是什么?

10 个答案:

答案 0 :(得分:26)

打包镜像搜索步骤:

  1. Search package directories中搜索openjdk-8-jdk。您会看到两个结果:

  2. 选择拉伸存储库

  3. 滚动到下载openjdk-8-jdk 部分,然后选择您的体系结构。例如amd64
  4. 现在您可以看到镜像列表以及如何通过apt安装软件包的说明:

    您应该可以通过添加一行来使用任何列出的镜像 到您的/etc/apt/sources.list像这样:

    deb http://security.debian.org/debian-security拉伸/更新主要

安装步骤:

  1. 安装软件源管理器

    apt-get update
    apt-get install software-properties-common
    
  2. 使用openjdk-8-jdk添加镜像

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

    apt-get install openjdk-8-jdk
    

注意:您可以使用上述步骤找到要安装的任何其他软件包的官方Debian镜像

答案 1 :(得分:8)

您可以搜索Debian packages site并找到openjdk-8-jdk软件包,以用于Debian 10,该软件包当前仅可从不稳定的(sid)存储库中获得。

首先,最好检查并保存已安装的Java SDK / JRE软件包的当前系统范围的符号链接:

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

然后检查是否可以使用当前配置安装此软件包:

apt-cache policy openjdk-8-jdk

如果否,则需要将不稳定的存储库添加到源列表。 负输出可能意味着您更喜欢使用稳定的存储库,通常不适合从不稳定的存储库更新所有其他软件。 因此,在将不稳定的存储库添加到源列表之前,请确保将APT::Default-Release配置选项设置为"stable"

grep -r Default-Release /etc/apt/

如果没有(默认情况下),则通过创建以下文件按照that answer中的建议进行设置:

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

APT::Default-Release "stable";

现在您可以将不稳定的存储库添加到源列表中。 在我更喜欢检查安装系统时我选择了哪个镜像之前。只需查看主要来源列表即可:

cat /etc/apt/sources.list

在我的情况下,输出显示mirror.yandex.ru服务器用作系统源。因此,我对不稳定对象使用相同的文件,并添加以下文件:

/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

(我还有90-debian-testing.list文件用于测试存储库。)

然后更新软件包列表:

apt update

并检查您的系统不会从不稳定的来源进行更新:

apt list --upgradable

然后重新检查是否需要安装软件包:

apt-cache policy openjdk-8-jdk

请安装该软件包:

apt install openjdk-8-jdk

查看新的符号链接:

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

只需浪费几秒钟(或继续使用man 1 update-alternatives)。

答案 2 :(得分:4)

我发现是这样的:

添加到您的sources.list中

sudo vim /etc/apt/sources.list

以下回购:deb http://ftp.us.debian.org/debian sid main 然后:

sudo apt-get update

最后一个:

sudo apt-get install openjdk-8-jdk

其他步骤:

sudo update-alternatives --config java

选择您的Java版本。

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

答案 3 :(得分:3)

这是我用来在Bitbucket的Pipelines Docker映像NodeJS 10.16.2上安装OpenJDK 8的脚本。 但是现在我看到这个docker镜像基于Stretch ...

它基于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=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

更新

情况有所变化,版本已更新。这是适用于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=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

答案 4 :(得分:2)

或者,您可以使用采纳openjdk存储库。

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

答案 5 :(得分:1)

我需要安装32位版本,但据我所知,这在acceptopenjdk中不可用。我在java.com的下载区域找到了一个二进制文件的副本:

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

我需要的只是JRE(而不是JDK,但是两者的过程都应该相同),并且由于它也仅供个人使用,因此Oracle二进制文件还可以(在这方面有局限性)。

我下载了二进制文件并将其放在需要运行它的用户的主文件夹(〜/)中,然后像这样将其解压缩:

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

然后通过将以下行追加到〜/ .profile来将位置添加到将运行Java应用程序的用户的路径:

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

这对于我的情况很好,但是毫无疑问,安装二进制文件的更好方法。例如,因此它适用于所有Unix用户,而不只是一个。

答案 6 :(得分:1)

基于上面的一些答案,这是我在运行 node 12.x (node:12.6-buster-slim) 的 debian buster silm os 上的 shell 脚本中使用的内容

这是在准备用act转移到github动作本地测试,请注意不需要sudo,因为这个容器中的ci测试已经是root了。

apt-get update -qq
#software-properties-common not installed on slim
apt-get install software-properties-common -y -q
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

apt-get update -qq
#man folder needs to be available for adoptopenjdk-8 to finish configuring
mkdir -p /usr/share/man/man1/
apt-get install adoptopenjdk-8-hotspot -y

#ensure openjdk-8-jdk is found for some installations, thanks b8kich for the virtual wrapper
curl https://gitlab.com/b8kich/adopt-openjdk-8-jdk/-/raw/master/adopt-openjdk-8-jdk_0.1_all.deb?inline=false -o adopt-openjdk-8-jdk_0.1_all.deb
dpkg -i adopt-openjdk-8-jdk_0.1_all.deb

答案 7 :(得分:0)

我从杰西(Jessie)迁移到巴斯特(Buster),发现没有那么旧的旧代码无法在JDK11上编译和运行。

我设法从Jessie发行版中复制了所有java8文件夹,重新制作了链接,并将其设置为Eclipse上的新JDK。到目前为止有效。

答案 8 :(得分:0)

我发现在debian buster上下载Java 8的最简单方法是使用命令su apt-get install openjdk-8-jdk

答案 9 :(得分:0)

安装JDK8的最简单方法是使用SDKMAN

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