5 回答

TA贡献1853条经验 获得超18个赞
或者,您可以使用 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

TA贡献1808条经验 获得超4个赞
警告:这个答案表明 Debian 发行版的不受支持和危险的混合。按照建议自行承担风险,因为它可能会在升级时破坏系统,如 http://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian中所述
包镜像搜索步骤:
在搜索包目录中搜索openjdk-8-jdk。可以看到两个结果:
stretch(oldstable) (java): OpenJDK 开发工具包 (JDK)
sid(不稳定) (java):OpenJDK 开发工具包 (JDK)
选择拉伸存储库
滚动到下载 openjdk-8-jdk部分并选择您的体系结构。例如amd64
现在您可以看到镜像列表和说明如何通过 apt 安装软件包:
您应该能够通过向 /etc/apt/sources.list 添加一行来使用任何列出的镜像,如下所示:
deb http://security.debian.org/debian-security stretch/updates 主要
安装步骤:
安装软件源管理器
apt-get update apt-get install software-properties-common
用openjdk-8-jdk添加镜像
apt-add-repository 'deb http://security.debian.org/debian-security stretch/updates main' apt-get update
安装 openjdk 8
apt-get install openjdk-8-jdk
注意:您可以使用上述步骤找到官方的 Debian 镜像以及您要安装的任何其他软件包

TA贡献1836条经验 获得超5个赞
您可以搜索Debian 软件包站点,发现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/
如果否(默认情况下),则通过创建此文件按照该答案中的建议进行设置:
/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
)。

TA贡献2037条经验 获得超6个赞
这是我用来在 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.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.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

TA贡献1777条经验 获得超3个赞
我需要安装一个 32 位版本,但据我所知,这在 adoptopenjdk 上不可用。我在 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 用户都可以使用它,而不仅仅是一个。
添加回答
举报