<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->
在ubuntu下安装JDK最简单方式就是用apt-get install 命令了,但这样安装的JDK往往不是最新版,要安装最新的JDK还需要到sun的官方网站下载。但sun的网站只有rpm和bin两种格式,并没有Ubuntu使用的deb格式,这就需要我们使用ubuntu的转换工具了。我们可以下载bin格式的,最新的jdk文件是:
jdk-6u13-linux-i586.bin
安装步骤参见:
http://linuxtoy.org/archives/install_jdk_6_in_ubuntu.html
我一开始就是按着这个来安装的,但因为linuxtoy没有 java-package0.28ubuntu1all.deb 下载,
又去google了一下,发现:
http://packages.qa.debian.org/j/java-package.html
才是java-pakage的源头,而且最新的已经是0.42版了(我用0.28版的发现不能安装jdk1.6.10,因为该版本缺少一些文件),于是下载最新版的源代码:
http://ftp.de.debian.org/debian/pool/contrib/j/java-package/java-package_0.42.tar.gz
下载成功后解压: tar zxvf java-package_0.42.tar.gz
然后cd java-package_0.42目录,执行命令编译(可能需要root权限,前面加sudo或fakeroot):
$ debian/rules binary
这会生成java-package_0.42_all.deb 文件。我的系统提示要安装debhelper,用apt-get install debhelper就可以了。
现在可以安装java-package了:
$ sudo dpkg -i ../java-package_0.42_all.deb
安装成功后,再用apt-get install fakeroot命令来安装fakeroot。然后运行:
$ fakeroot make-jpkg jdk-6u13-linux-i586.bin
但是却提示 “No matching plugin was found”,在网上查了半天,终于找到了解决的方法。原来java-package安装成功后,会在/usr/share/java-package 目录下生成一些sh文件,这些文件就是上面fakeroot make-jpkg命令时需要用到的,如果安装jre,就需要用该目录下的sun-j2re.sh 文件,如果安装JDK,就要用到sun-j2sdk.sh 文件,我们可以看到对应i386|486架构部分的代码最多支持到jdk1.6.9,现在我们要安装的是jdk1.6.13,最后的版本数字是2位,没有办法识别,下面是sun-j2re.sh文件内容:
case "${DEB_BUILD_ARCH:-$DEB_BUILD_GNU_TYPE}" in
i386|i486-linux-gnu) #表示是32位的x86架构
case "$archive_name" in
......中间是各版本jdk的设定
"jdk-6u"[0-9]"-linux-i586.bin") # SUPPORTED 这个只支持一位的小版本号
j2se_version=1.6.0+update${archive_name:6:1}${revision}
j2se_expected_min_size=130
found=true
.....
现在我们加入如下代码:
"jdk-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTED 支持2位的小版本号
j2se_version=1.6.0+update${archive_name:6:2}${revision}
j2se_expected_min_size=70
found=true
最终的代码如下所示:
"jdk-6u"[0-9]"-linux-i586.bin") # SUPPORTED 原来的
j2se_version=1.6.0+update${archive_name:6:1}${revision}
j2se_expected_min_size=130
found=true
;;
"jdk-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTED 新增的
j2se_version=1.6.0+update${archive_name:6:2}${revision}
j2se_expected_min_size=70
found=true
;;
esac
这样就可以解决“No matching plugin was found”的问题了。如果你用的是64位的系统,则在“ia64|ia64-linux-gnu)”部分加入上述代码。
现在执行:
$ fakeroot make-jpkg jdk-6u13-linux-i586.bin
就可以生成需要的deb文件了。然后用
$ sudo dpkg -i sun-j2sdk1.6_1.6.0+update13_i386.deb
命令安装jdk就可以啦。
这样,我们就可以随时安装最新版的JDK到ubuntu了,而不比等待ubuntu源的更新了。