问题描述
我想将我的主系统升级到16.04,但是我的项目需要OpenJDK 7。
显然它不是一个简单的apt-get install openjdk-7-jdk
。版本库中仅列出版本8和9。
任何人都可以指示我如何安装它?
最佳解决方法
我找到了以下适用于我的说明:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
这将“PPA for OpenJDK uploads(restricted)”定义为附加的软件包存储库,更新您的信息并安装该软件包及其依赖项(来自该存储库)。
次佳解决方法
它看起来并不像openjdk-r /ppa的维护者将更新版本7u95-2.6.4-3以上的openjdk-7软件包。尽管如此,该软件包的描述“Debian GNU /Linux的Debian实验主要档案中复制”给我们提供了一条关于如何自己处理这个问题的线索。
选项1:手动安装
-
下载适用于您的架构的软件包:(对于大多数用户,这意味着如果64位为amd64,或者如果安装32位Ubuntu,则为i386)
-
(尝试)使用
dpkg
安装软件包:sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
-
检查
dpkg
的输出。如果存在依赖性问题 – 很可能 – 您会看到以下内容(用您的体系结构替代amd64):处理时遇到错误:openjdk-7-jre:amd64 openjdk-7-jre-headless:amd64 openjdk-7-jdk:amd64
如果没有依赖性问题,那么很好,你完成了,跳到#4。否则,如果您需要解决一些依赖性问题,则使用以下方法处理:
sudo apt install -f
注意,让
apt
解决依赖关系后,不需要re-rundpkg
。它会自动完成openjdk软件包的安装。 -
更新java的替代品。您可以使用
update-java-alternatives --list
查看所有已安装的java版本。要激活OpenJDK Java 1.7,请运行:sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
您可能会注意到有关
IcedTeaPlugin.so
插件不可用的错误。这对于使用JDK的开发人员来说并不是真正关心的问题。 -
验证Java正在工作:
java -version
应该输出类似于:
Java版本”1.7.0_121″ OpenJDK运行环境(IcedTea 2.6.8)(7u121-2.6.8-1)OpenJDK 64位服务器虚拟机(构建24.121-b00,混合模式)
选项2:自动安装(包括使用apt
更新)
Pinning可用于从Debian存储库安装和更新openjdk-7和libjpeg62-turbo(依赖项)。
-
安装Debian keyring:
sudo apt install debian-archive-keyring
-
添加所需的存储库:
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)存储库在依赖版本上更宽松。
-
创建一个钉住文件,告知
apt
只考虑我们感兴趣的软件包(我们当然不希望我们的整个Ubuntu发行版”upgraded”与Debian试验软件包一起使用)。用下面的内容创建文件
/etc/apt/preferences.d/debian
。您需要超级用户权限,因此请使用sudo vim
,sudo nano
,gksudo 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 Package: libfontconfig1 Pin: release o=Debian,n=sid Pin-Priority: 500 Package: fontconfig-config Pin: release o=Debian,n=sid Pin-Priority: 500
-
更新
apt
缓存(从Debian的软件包列表来看,这需要一段时间):sudo apt update
-
安装openjdk-7-jdk:
sudo apt install openjdk-7-jdk
-
更新java的替代品。您可以使用
update-java-alternatives --list
查看所有已安装的java版本。要激活OpenJDK Java 1.7,请运行:sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
您可能会注意到有关
IcedTeaPlugin.so
插件不可用的错误。这对于使用JDK的开发人员来说并不是真正关心的问题。 -
验证Java正在工作:
java -version
应该输出类似于:
Java版本”1.7.0_121″ OpenJDK运行环境(IcedTea 2.6.8)(7u121-2.6.8-1)OpenJDK 64位服务器虚拟机(构建24.121-b00,混合模式)
第三种解决方法
您可以从Azul下载适合您需求的OpenJDK 7。他们都有一个DEB(包系统)和一个ZIP分布。我只使用ZIP分发。
http://www.azul.com/downloads/zulu/zulu-linux/