如何在Debian上安装Oracle Java使用make-jpkg和fakeroot时没有错误?

如何在Debian上安装Oracle Java使用make-jpkg和fakeroot?

debian wheezy上安装oracle java的手册是相当清楚和可以理解的:

http://wiki.debian.org/JavaPackage https://blogs.oracle.com/marigan/entry/installation_of_the_jdk_on http://www.debian-administration.org/articles/142

  • 从oracle下载jdk-7u21-linux-x64.tar.gz
  • 安装java包
  • 用jdk-7u21-linux-x64.tar.gz运行make-jpkg

作为root运行:

make-jpkg jdk-7u21-linux-x64.tar.gz fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

导致以下错误:

你是真正的根 – 不幸的是,一些Java发行版已经安装了直接操作/ etc的脚本,并可能导致你的系统有一些不一致。 相反,您应该成为非root用户并运行:

fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

这将不会损害您的系统文件,并仍然允许Java发行版本成功解压缩。

中止。

正常用户运行:

make-jpkg jdk-7u21-linux-x64.tar.gz fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

结果在警告/错误墙上。

一些错误:

 dpkg-shlibdeps: warning: Can't extract name and version from library name `libverify.so' error: couldn't find library libxslt.so.1 needed by /tmp/make-jpkg.MxvYKHyE3L/install/usr/lib/jvm/j2sdk1.7-oracle/jre/lib/amd64/libjfxwebkit.so (ELF format: 'elf64-x86-64'; RPATH: '') dpkg-gencontrol: warning: Depends field of package oracle-j2sdk1.7: unknown substitution variable ${shlibs:Depends} dpkg-shlibdeps: error: cannot continue due to the errors listed above 

完整的输出:没有fakeroot http://pastie.org/private/r2llqa2pubqzh8krhbymw

与fakeroot http://pastie.org/private/kigrgcsam9pvdazbex1fa

安装工作正常:

 dpkg -i oracle-j2sdk1.7_1.7.0+update21_amd64.deb 

java版本:

 java -version java version "1.7.0_21" Java(TM) SE Runtime Environment (build 1.7.0_21-b11) Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode) 

是错误安全地忽略?

首先,您可以忽略由dpkg-shlibdeps发出的警告。 错误应该提示您需要安装哪些软件包,以便满足JDK的所有库依赖关系。

发生这种情况的原因是,您正在从二进制分发(即预编译的JDK)构build一个deb包。 通常,Debian软件包是从源码生成的,而不是从二进制文件生成的。 为了做到这一点,构build软件包的人将所有源依赖的库添加到某个文件( debian/control )中。 没有安装这些库,源码不能编译,因此不会导致一个包。

在你的情况下,整个JDK已经由Oracle编译, make-jpkg只模仿从源代码构build包的过程。 因此,您无需事先安装所有必需的库。

要沉默错误,您可以使用apt-file找出哪些软件包包含丢失的文件( libgtk-x11-2.0.so.0libgdk-x11-2.0.so.0libatk-1.0.so.0 ,.. 。)并安装它们。

或者你可以使用Debian Wheezy预先打包的OpenJDK,并且可以通过apt-get install openjdk-7-jdk轻松安装。