由于安全问题,Debian似乎不再支持openjdk-8-jdk。为Debian 10(Buster)安装openjdk-8-jdk的最简单方法是什么?
答案 0 :(得分:26)
在Search package directories中搜索openjdk-8-jdk。您会看到两个结果:
选择拉伸存储库
现在您可以看到镜像列表以及如何通过apt安装软件包的说明:
您应该可以通过添加一行来使用任何列出的镜像 到您的/etc/apt/sources.list像这样:
deb http://security.debian.org/debian-security拉伸/更新主要
安装软件源管理器
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镜像
答案 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版本。
答案 3 :(得分:3)
这是我用来在Bitbucket的Pipelines Docker映像NodeJS 10.16.2上安装OpenJDK 8的脚本。 但是现在我看到这个docker镜像基于Stretch ...
#!/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
答案 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