如何在 Ubuntu 16.04 或更高版本上安装 openjdk 7?

如何在 Ubuntu 16.04 或更高版本上安装 openjdk 7?

我想将我的主系统升级到 16.04,但我从事的项目需要 OpenJDK 7。

显然它不是从普通的 获得的apt-get install openjdk-7-jdk。存储库中仅列出了版本 8 和 9。

有人能告诉我如何安装它的说明吗?

答案1

安全警告

下文提到的 PPA 中的软件包未使用 Java 安全补丁进行更新。请勿在生产中使用;请参阅其他答案。

在撰写本文时,OpenJDK 7 的最后一次上传是在 '2016-04-22',版本为 7u95,并且仍可作为“最新版本”使用,而 Ubuntu 14.04 已经已更新至 7u181


更新:虽然这是获得投票最多的答案,但由于该 PPA 缺乏安全更新,它可能不是您想要在 2018 年使用的答案。

我发现以下对我有用的说明:

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

这将“OpenJDK 上传的 PPA(受限)”定义为附加软件包存储库,更新您的信息,并安装该软件包及其依赖项(来自该存储库)。

答案2

编辑于 2019 年 7 月 22 日:此答案目前不起作用。下面引用的 JDK 软件包在 Debian Experimental 上不再可用。无论如何,它们落后于包含较新安全更新的 Ubuntu Trusty 软件包。请参考其他答案,直到可以解决此问题(抱歉,没有预计到达时间)。


openjdk-r/ppa 的维护者似乎不会更新版本 7u95-2.6.4-3 以外的 openjdk-7 软件包。不过,该软件包的描述“从 Debian GNU/Linux 主存档中的 debian experiments 复制”为我们提供了有关如何自行处理此问题的线索。

选项 1:手动安装

  1. 下载适合您的架构的软件包:(
    对于大多数用户来说,如果安装的是 64 位,则下载 amd64;如果安装的是 32 位 Ubuntu,则下载 i386)

  2. (尝试)使用以下命令安装软件包dpkg

    Ubuntu 17.10 及更早版本:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
    

    Ubuntu 18.04 及更高版本:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
    
  3. 检查输出dpkg。如​​果存在依赖性问题(很可能存在),您将看到以下内容(您的体系结构替换为 amd64):

    处理时遇到错误:
    openjdk-7-jre:amd64
    openjdk-7-jre-headless:amd64
    openjdk-7-jdk:amd64

    如果没有依赖关系问题,那就太好了,您已经完成了,跳到第 4 步。否则,如果您需要解决一些依赖关系问题,可以使用以下方法处理:

    sudo apt install -f
    

    dpkg注意,解析依赖项后无需重新运行apt。它将自动完成 openjdk 包的安装。

  4. 更新 Java 替代品。您可以使用 查看所有已安装的 Java 版本update-java-alternatives --list。要激活 OpenJDK Java 1.7,请运行:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    您可能会注意到有关插件不可用的错误IcedTeaPlugin.so。对于使用 JDK 的开发人员来说,这并不是什么大问题。

  5. 验证 Java 是否正常工作:

    java -version
    

    输出类似如下内容:

    Java 版本“1.7.0_161”
    OpenJDK 运行时环境(IcedTea 2.6.12)(7u161-2.6.12-1)
    OpenJDK 64 位服务器 VM(版本 24.161-b01,混合模式)

选项 2:自动安装(包括更新apt

固定可以用来从 Debian 存储库安装和更新 openjdk-7-jdk 及其依赖项。

  1. 创建一个固定文件,告诉apt我们只考虑我们感兴趣的软件包(我们当然不希望我们的整个 Ubuntu 发行版都用 Debian 实验软件包“升级”)。

    创建/etc/apt/preferences.d/debian包含以下内容的文件。您需要超级用户权限,因此请使用sudo vimsudo nanogksudo gedit等之一。

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    

    对于 Ubuntu 17.10 及更早版本,还需附加以下内容(并参阅底部的注释):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. 安装 Debian 密钥环:

    sudo apt install debian-archive-keyring
    

    apt update注意:虽然这是添加 Debian 密钥环的最简单方法,但它可能不是最新的。在步骤 4 中运行时检查如下输出:

    W:GPG 错误:http://cdn-fastly.deb.debian.org/debian experiment InRelease:由于公钥不可用,无法验证以下签名:NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E:存储库“http://httpredir.debian.org/debian experiments InRelease”尚未签名。

    如果看到此错误,请使用以下命令手动添加必要的键:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
    

    其中8B48AD62469255537638D0442B90D010应该与您在警告消息中看到的公钥相匹配。

  3. 添加所需的存储库:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    为什么不使用稳定的 Debian 存储库?您会遇到 Debian 稳定版无法满足的依赖关系。实验性(针对 openjdk-7)和 sid(针对 libjpeg62-turbo、libfontconfig1 和 fontconfig-config)存储库对依赖版本的要求更宽松。

  4. 更新apt缓存(由于 Debian 的软件包列表很大,因此预计这会花费一些时间):

    sudo apt update
    
  5. 安装 openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
    
  6. 更新 Java 替代品。您可以使用 查看所有已安装的 Java 版本update-java-alternatives --list。要激活 OpenJDK Java 1.7,请运行:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    您可能会注意到有关插件不可用的错误IcedTeaPlugin.so。对于使用 JDK 的开发人员来说,这并不是什么大问题。

  7. 验证 Java 是否正常工作:

    java -version
    

    输出类似如下内容:

    Java 版本“1.7.0_161”
    OpenJDK 运行时环境(IcedTea 2.6.12)(7u161-2.6.12-1)
    OpenJDK 64 位服务器 VM(版本 24.161-b01,混合模式)

字体配置说明

libfontconfig1并且fontconfig-config必须在 Ubuntu 17.10 及更早版本上升级到 2.12 或更高版本。Debian 的更新包不包含 Ubuntu 的自定义,因此安装这些包后,某些应用程序会显示难看的字体;例如 Charles Web 调试代理。根据您使用的程序,您可能会或可能不会受到此问题的影响。

答案3

您可以从 Azul 下载 OpenJDK 7,它可能会满足您的需求。它们都有 DEB(用于软件包系统)和 ZIP 发行版。我只使用过 ZIP 发行版。

http://www.azul.com/downloads/zulu/zulu-linux/

答案4

一个简单的方法是:

将这些行添加到/etc/apt/sources.list::

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

然后更新 apt 并安装。您可能需要降级tzdata软件包。

之后我会建议注释掉这些行并再次 apt update 以防止从该存储库安装或更新软件包(这可能会导致意外行为)。

一个问题是您需要保留这些包,以便在更新系统(特别是包)时它们不会被删除tzdata

笔记:将此方法作为最后的手段,最好使用任何其他可以让您顺利更新的方法。

相关内容