簡體   English   中英

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

[英]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

https://adoptopenjdk.net/installation.html

警告:這個答案暗示了 Debian 版本不受支持和危險的混合。 遵循風險自負的建議,因為它可能會在升級時破壞系統,如http://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian 中所述

包鏡像搜索步驟:

  1. 搜索包目錄中搜索openjdk-8-jdk 您可以看到兩個結果:

  2. 選擇拉伸存儲庫

  3. 滾動到下載 openjdk-8-jdk部分並選擇您的架構。 例如amd64

  4. 現在你可以看到鏡像列表和如何通過 apt 安裝包的說明:

    您應該能夠通過在 /etc/apt/sources.list 中添加一行來使用任何列出的鏡像,如下所示:

    deb http://security.debian.org/debian-security stretch/updates main

安裝步驟:

  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 鏡像

由於安全問題,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 的...

它基於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

我需要安裝一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM