在Ubuntu 10.04上安装openjdk-7-jre - 包openjdk-7-jre没有可安装的候选项。

16

我试图在Ubuntu上安装openjdk-7,但是遇到以下错误:

$ sudo apt-get install openjdk-7-jre
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package openjdk-7-jre is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package openjdk-7-jre has no installation candidate

我想我可能缺少一些仓库或类似的东西,但我找不到任何参考资料来确定位置和内容。


2
这可能是一个适合在http://askubuntu.com/上提问的好问题。 - Jeffrey
Openjdk-7-jre在Ubuntu 10.04/Lucid的正常存储库中不可用。这里有一个关于同样问题的问题,解决方法是使用webupd8软件包:https://dev59.com/gGox5IYBdhLWcg3w44Lb - wkl
3个回答

13

最近我在CentOS、openSUSE和Ubuntu上需要安装Java 7,经过多次烦恼和研究,终于选择了以下的方法,这个方法可以在以上三个操作系统上都适用:

  • 忽略(并卸载)任何捆绑或随附在你发行版中的JRE或JDK。它们会带来更多问题,而且总是滞后于最新更新。
  • http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JRE 7(或者如果你想进行开发,则需下载JDK 7)。
    • 对于JRE,请获取jre-xxx-linux-x64.tar.gz(如果你有64位机器)或jre-xxx-linux-i586.tar.gz(如果你有32位机器)。不要费心去下载RPM。
    • 对于JDK,请获取jdk-xxx-linux-x64.tar.gz(如果你有64位机器)或jdk-xxx-linux-i586.tar.gz(如果你有32位机器)。
  • 以root用户或使用sudo执行以下操作:
    • # tar -xzvf jdk-xxx-linux-x64.tar.gz (或者你所下载的文件名)
    • # mkdir /usr/java
    • # mv jdkx.x.x_xx /usr/java (如果你下载的是JRE,则将其解压后得到的目录名替换此处的目录名)
    • # ln -s /usr/java/jdkx.x.x_xx /usr/java/jdkx
    • # ln -s /usr/java/jdkx /usr/java/latest
    • # ln -s /usr/java/latest /usr/java/default
    • # ln -s /usr/java/default/bin/java /usr/bin/java
    • # ln -s /usr/java/default/bin/javac /usr/bin/javac
    • # ln -s /usr/java/default/bin/javah /usr/bin/javah
    • # ln -s /usr/java/default/bin/javadoc /usr/bin/javadoc
    • # ln -s /usr/java/default/bin/javaws /usr/bin/javaws

显然,你需要填写一些内容来适应你的情况,但你应该可以明白如何操作了。这里提供一个完整的安装示例(请注意,为了我的需求,我需要同时安装Java 7和Java 6 JDK的64位和32位版本,因此有很多步骤):

# ls -al /usr/java/
total 24
drwxr-xr-x  6 root root 4096 Sep  2 11:02 .
drwxr-xr-x 14 root root 4096 Aug  9 22:14 ..
lrwxrwxrwx  1 root root   16 Aug 26 20:05 default -> /usr/java/latest
drwxr-xr-x  8 root root 4096 Sep  2 10:52 jdk1.6.0_35
drwxr-xr-x  8 root root 4096 Sep  2 10:52 jdk1.6.0_35-32
drwxr-xr-x  8 root root 4096 Sep  2 10:52 jdk1.7.0_07
drwxr-xr-x  8 root root 4096 Sep  2 10:52 jdk1.7.0_07-32
lrwxrwxrwx  1 root root   11 Sep  2 10:54 jdk6 -> jdk1.6.0_35
lrwxrwxrwx  1 root root   14 Sep  2 10:54 jdk6-32 -> jdk1.6.0_35-32
lrwxrwxrwx  1 root root   11 Sep  2 10:54 jdk7 -> jdk1.7.0_07
lrwxrwxrwx  1 root root   14 Sep  2 10:54 jdk7-32 -> jdk1.7.0_07-32
lrwxrwxrwx  1 root root    4 Sep  2 10:55 latest -> jdk7
# ls -al /usr/bin/java*
lrwxrwxrwx 1 root root 26 Aug 26 20:05 /usr/bin/java -> /usr/java/default/bin/java
lrwxrwxrwx 1 root root 27 Aug 26 20:05 /usr/bin/javac -> /usr/java/default/bin/javac
lrwxrwxrwx 1 root root 29 Aug 26 20:05 /usr/bin/javadoc -> /usr/java/default/bin/javadoc
lrwxrwxrwx 1 root root 27 Aug 26 20:07 /usr/bin/javah -> /usr/java/default/bin/javah
lrwxrwxrwx 1 root root 28 Aug 26 20:05 /usr/bin/javaws -> /usr/java/default/bin/javaws
# java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

同样重要的是:由于Oracle对每次想要下载Java时同意其条款的新严格要求,您不能再像以前那样使用wget下载Java。必须通过浏览器下载。如果您的Linux机器没有GUI和/或通过SSH连接到它,则需要将文件下载到本地机器上,然后使用类似scp的工具将文件复制到Linux机器上。 - Nick Williams
你能解释一下为什么有那个“/default/”文件夹吗?不仅我在本地看不到它,而且我也不确定它为什么存在。谢谢。 - john_science
如果你使用“update-java-alternatives”命令代替手动设置所有符号链接,那么你可以跳过很多步骤。一旦你在一个Java实例上手动设置了所有符号链接,你就可以使用单个“update-java-alternatives”命令切换所有符号链接。 - djangofan

4
在Ubuntu Lucid 64位系统上,我需要将此链接添加到链中:
ln -s /usr/java/latest /usr/java/default

2

Oracle对Java的替代方案变得越来越严格,这是好事。我认为openjdk非常不错。在像Ubuntu这样的Debian系统上安装它非常简单。请使用以下命令apt-get:

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

如果您的apt-get缓存/元数据没有更新,包括openjdk-7在内的最新更改,则需要更新。逻辑上,安装openjdk-7-jre软件包也应该可以正常工作,除非您的发行版非常旧。


http://packages.ubuntu.com/search?keywords=openjdk-7-jre 只能通过 Oniric 及更新版本获得。 - Natalie Adams
是的,可通过Oneiric而不是Oniric获得。出了什么问题? - Atiq Rahman
5
海报正在运行Lucid,而不是之前的版本Oneiric。在Debian的世界中,建议永远不要混合使用来自不同版本的软件包,因为这可能会导致依赖冲突。 - Natalie Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接