如何在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
作为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.0 , libgdk-x11-2.0.so.0 , libatk-1.0.so.0 ,.. 。)并安装它们。
或者你可以使用Debian Wheezy预先打包的OpenJDK,并且可以通过apt-get install openjdk-7-jdk轻松安装。