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 用戶都可以使用它,而不僅僅是一個。
添加回答
舉報