在 Debian 上安装 JDK 8

在 Debian 上安装 JDK 8

我正在尝试在 Debian 上安装 JDK 8。我发现了很多类似的主题,但没有一个能解决我的问题。在大多数主题中,解决方案是这个命令

sudo apt-get install software-properties-common
sudo apt-get install python-software-properties

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

但我收到了这个错误

正在读取软件包列表... 完成 正在构建依赖关系树 正在读取状态信息... 完成 无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的是不稳定的发行版,则某些必需的软件包尚未创建或已从传入中移出。以下信息可能有助于解决这种情况:

以下软件包具有未满足的依赖关系: openjdk-8-jdk :依赖: openjdk-8-jre (= 8u111-b14-2~bpo8+1) 但不会安装依赖: openjdk-8-jdk-headless ( = 8u111-b14-2~bpo8+1) 但不会安装 E: 无法纠正问题,您持有损坏的软件包。

我还检查了更新

sudo update-alternatives --config java

输出是

java 链接组(提供 /usr/bin/java)中只有一种替代方案: /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java 无需配置。

答案1

openjdk-8 在我的默认 Jessie/stable 安装中可用 - 只需要 apt-get 安装它(openjdk-8-jdk 以及它推荐或依赖的任何您想要/需要的东西)

当然,它可能取决于您的 /etc/apt/sources.list 文件,包括 contrib 和非自由存储库

/etc/apt/sources.list 应该看起来像

deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib non-free
deb http://ftp.us.debian.org/debian/ jessie-backports main contrib non-free

答案2

首先总是要查看 Debian PTS 以了解您可以使用哪些选项。例如,如果我去 -

https://tracker.debian.org/pkg/openjdk-8

在左侧你有一个叫做版本的东西 - 你能看到它吗,它显示 -

  stable-bpo: 8u121-b13-1~bpo8+1
     testing: 8u121-b13-3
    unstable: 8u121-b13-4

现在 stable-bpo 意味着它处于向后移植状态。 backports 页面很好地描述了它的功能,请参阅https://backports.debian.org/

因此,您需要将 @Reto 共享的内容以及向后移植地址添加到您已有的软件包列表中 -

deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib non-free
deb http://ftp.us.debian.org/debian/ jessie-backports main contrib non-free

现在更新索引,它应该在最后说这样的话 -

Reading package lists... Done
Building dependency tree       
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.

看不到可以升级的软件包数量,因为这是我拥有的软件包数量、更新软件包的频率等的函数。如果四行与上面类似,则意味着索引更新顺利进行,没有错误。

一旦完成,你可以简单地做 -

$ aptitude search openjdk-8

获取列出或未列出多少个不同的 openjdk-8 软件包的列表。例如,我正在测试,这里有很多。我们也有 openjdk-9。

一旦你得到它,只需像你之前尝试安装一样安装 -

$ sudo aptitude install openjdk-8 

并让 aptitude 处理所有依赖解析。如果您仍有问题,请在此处告知我们。

答案3

这里问题没有解决...

# cat /etc/apt/sources.list

#deb hxxp://debian.mirrors.ovh.net/debian/ jessie main contrib non-free
#deb-src hxxp://debian.mirrors.ovh.net/debian/ jessie main contrib non-free

deb hxxp://security.debian.org/ jessie/updates main contrib non-free
deb-src hxxp://security.debian.org/ jessie/updates main contrib non-free

# jessie-updates, previously known as 'volatile'
deb hxxp://debian.mirrors.ovh.net/debian/ jessie-updates main contrib non-free
deb-src hxxp://debian.mirrors.ovh.net/debian/ jessie-updates main contrib non-free

# jessie-backports, previously on backports.debian.org
deb hxxp://debian.mirrors.ovh.net/debian/ jessie-backports main contrib non-free
deb-src hxxp://debian.mirrors.ovh.net/debian/ jessie-backports main contrib non-free

deb hxxp://debian.mirrors.ovh.net/debian/ jessie main contrib non-free
deb-src hxxp://debian.mirrors.ovh.net/debian/ jessie main contrib non-free

# apt-get 安装 openjdk-8-jdk

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 openjdk-8-jdk : Depends: openjdk-8-jre (= 8u121-b13-1~bpo8+1) but it is not going to be installed
                 Depends: openjdk-8-jdk-headless (= 8u121-b13-1~bpo8+1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

相关内容