[英]How to install openjdk-8-jdk on Debian 10 (Buster)?
由於安全問題,Debian 似乎不再支持 openjdk-8-jdk。 為 Debian 10(Buster)安裝 openjdk-8-jdk 的最簡單方法是什么?
或者,您可以使用adaptopenjdk 存儲庫:
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
警告:這個答案暗示了 Debian 版本不受支持和危險的混合。 遵循風險自負的建議,因為它可能會在升級時破壞系統,如http://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian 中所述
在搜索包目錄中搜索openjdk-8-jdk 。 您可以看到兩個結果:
選擇拉伸存儲庫
滾動到下載 openjdk-8-jdk部分並選擇您的架構。 例如amd64
現在你可以看到鏡像列表和如何通過 apt 安裝包的說明:
您應該能夠通過在 /etc/apt/sources.list 中添加一行來使用任何列出的鏡像,如下所示:
deb http://security.debian.org/debian-security stretch/updates main
安裝軟件源管理器
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 鏡像
由於安全問題,Debian似乎不再支持openjdk-8-jdk。 為Debian 10(Buster)安裝openjdk-8-jdk的最簡單方法是什么?
您可以搜索Debian 軟件包站點,並找出適用於 Debian 10 的openjdk-8-jdk
軟件包目前僅可從不穩定 (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
)。
這是我用來在 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
我需要安裝一個 32 位版本,但就我所見,adaptopenjdk 不提供此版本。 我在 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 用戶,而不僅僅是一個用戶。
安裝 JDK8 的最簡單方法是使用SDKMAN 。
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk install java 8.0.275.hs-adpt
基於上面的一些答案,這是我在運行 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
我發現,主要是在多年使用具有特定 Java 要求的已棄用 iDrac 控制台之后,安裝多個版本的 JRE 或 JDK 是可取的,因為您可以根據需要在它們之間進行選擇,而不必擔心其他依賴項或破壞您的包管理器。
這實際上在 Debian 和其他 linux 上非常容易,通過避開包管理器並手動安裝您需要的任何版本。
從 Oracle 檔案庫(您需要一個免費的 Oracle 帳戶)下載所需的 jre/jdk 以獲取您需要的任何架構: https ://www.oracle.com/java/technologies/downloads/archive/
我從菜單中選擇了“Java SE 8(8u211 及更高版本)”,並找到了 jre-8u271-linux-x64.tar.gz。
從那里,將存檔解壓縮到運行 java 的用戶可以訪問的位置; 通常我會解壓到“/usr/local/lib/jre1.8.0_271/”。
從這里您可以成功運行 /usr/local/lib/jre1.8.0_271/bin/java 以及 javaws。
/usr/local/lib/jre1.8.0_271/bin# ./java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
在我的大多數系統上,我已經安裝了一些本機版本的 jre 打包版本,因此我的 /usr/bin/java 和 /usr/bin/javaws 通常是 /etc/alternatives/java /etc/alternatives/ 的符號鏈接javaws,分別。
要將系統切換到特定的 jre,只需更新相關符號鏈接以指向您選擇的版本:
rm /usr/bin/java /usr/bin/javaws /usr/bin/jjs /usr/bin/jcontrol
for i in java javaws jjs jcontrol; do ln -s /usr/local/lib/jre1.8.0_271/bin/$i /usr/bin/$i; done
請注意,如果您需要 jre 7、11 和 17,您可以下載每個版本並將其解壓縮到 /usr/local/lib 中的特定命名文件夾,或者如果您將手動啟動它,則可以使用您的主目錄,並使用通過更新符號鏈接或直接運行它們,它們中的每一個都可以根據需要單獨進行。
我剛剛遇到了類似的問題:我在舊的 HP-mini 210 上網本上用作“汽車記錄器”,它必須使用 java 8 32 位(記錄器應用程序需要)。
我正在運行基於 Debian 10(BunsenLabs Lithyum)的輕型發行版。 After poking around the easyest way I found to install java 8 32bits was by using an openjdk 8 deb package published by OpenLogic (they have 32 or 64 bits): https://www.openlogic.com/openjdk-downloads
只需下載並安裝(包管理器)。 工作 100%,現在我有一個超快的 hp-mini“汽車記錄器”。
我從 Jessie 遷移到 Buster,發現不太老的遺留代碼無法在 JDK11 上編譯和運行。
我設法從我的 Jessie 發行版中復制了所有 java8 文件夾,重新設計了鏈接,並將其設置為 Eclipse 上的新 JDK。 到目前為止,這是有效的。
我發現在 debian buster 上下載 java 8 的最簡單方法是使用命令 su apt-get install openjdk-8-jdk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.