Building a Debian package for Sun Java JDK/JRE

If you are looking for an integrated, java virtual machine, compiler and runtime environment, then Debian does provide them, and there are quite a lot of projects you can choose from, that are included in Debian:

but you will not find Sun’s Java 2 SE (JDK/JRE) included in Debian because of its restrictive license policy.

So if you need to use Sun’s JDK, you will have to manually install it. Actually this is very simple, as you just have to download the binary self-extracting package from Sun’s site and just execute it. So why would you want to create a deb (debian package)? Well maybe you will have to install it on several machines (maybe using a local apt repository) or maybe you just want to ease future upgrades, or just for fun… :-).

For building our own Sun Java deb’s we will use the debian tool make-jpkg. This will allow us to build in the exact same way as presented here the following packages: blackdown-j2re, blackdown-j2sdk, ibm-j2re, ibm-j2sdk, j2re, j2sdk, j2se, sun-j2re, sun-j2sdk. To exemplify this I will build the deb for sun-j2sdk, but will give short notes for JRE also.

Install fakeroot / java-package

Ok. The first thing you need is to install make-jpkg. Depending from the state of your system and applications/libraries already installed you might see different things from my examples… just ignore that, it is normal… For the record, I am using for this a Debian testing (Etch) system.

apt-get install fakeroot java-package

in case this will not find java-package make sure that you have in your apt sources the contrib repository where this lives, like

/etc/apt/sources.list
deb ftp://ftp.debian.org/debian/ etch main contrib

This will install its needed dependencies that are not available on your system. For example you can see something similar added to your system: debhelper gettext html2text intltool-debian libcompress-zlib-perl libmail-sendmail-perl po-debconf unzip

Download the Java package from Sun’s site

The next step is to get the appropriate java package (JDK or JRE) for your system. Go to http://java.sun.com/javase/downloads/index.jsp and choose either: JDK 5.0 Update 7 or Java Runtime Environment (JRE) 5.0 Update 7 download links (the versions are obviously the ones available when writing this post, so they might differ). Next review and if you want to continue accept the license and select the proper file to download. This will look like:
For JDK: jdk-1_5_0_07-linux-i586.bin or jdk-1_5_0_07-linux-amd64.bin (depending on your system architecture)
For JRE: jre-1_5_0_07-linux-i586.bin or jre-1_5_0_07-linux-amd64.bin (depending on your system architecture)

Once you have downloaded the needed file locally on your system you are ready to move on.

Building the deb package

In case you are running as root, you will need to switch to a regular user for the actual build (if not the java-package will complain about this being able to change system files in /etc and will exit with an error). Now as a regular user you will just have to run:

fakeroot make-jpkg jdk-1_5_0_07-linux-i586.bin

(using the actual java package you have downloaded). For jre use fakeroot make-jpkg jre-1_5_0_07-linux-i586.bin

Here is an example output from a JDK build:

fakeroot make-jpkg jdk-1_5_0_07-linux-i586.bin
Creating temporary directory: /tmp/make-jpkg.TvkzY20254
Loading plugins: blackdown-j2re.sh blackdown-j2sdk.sh common.sh ibm-j2re.sh
ibm-j2sdk.sh j2re.sh j2sdk-doc.sh j2sdk.sh j2se.sh sun-j2re.sh
sun-j2sdk-doc.sh sun-j2sdk.sh

Detected product:
Java(TM) Software Development Kit (J2SDK)
Standard Edition, Version 1.5.0+update07
Sun Microsystems(TM), Inc.
Is this correct [Y/n]: Y

Checking free diskspace: done.

In the next step, the binary file will be extracted. Probably a
license agreement will be displayed. Please read this agreement
carefully. If you do not agree to the displayed license terms, the
package will not be built.

Press [Return] to continue:
...showing license...
Do you agree to the above license terms? [yes or no]
yes
...building...

As you can see, you only have to follow the instructions: press Y to start, accept license (type yes) and you are done (basically the same as on a manual install of the binary package).

Once this will finish you will end up in the working directory with a deb package sun-j2sdk1.5_1.5.0+update07_i386.deb (or sun-j2re1.5_1.5.0+update07_i386.deb for JRE).

Now you can install it using dpkg:

dpkg -i sun-j2sdk1.5_1.5.0+update07_i386.deb

or for JRE: dpkg -i sun-j2re1.5_1.5.0+update07_i386.deb or place the files in your local apt repository if that is the case, and install them using apt:

apt-get install sun-j2sdk1.5

or for JRE: apt-get install sun-j2re1.5

Note: when the deb is build you might see several missing dependencies complains (from dpkg-shlibdeps). I am not really sure (and I didn’t had the time to test this) if this is really needed or not but it might be a good idea to install the missing dependencies that you might see before the final build. The packages missing might look like the ones from bellow:

libice6 libsm6 libxext6 libxp6 libxt6 libx11-6 libx11-data libxau6 libxdmcp6 x11-common libasound2 libxtst6 libxi6

I hope you enjoyed this post and found it useful. If you feel that this post can be improved or it is missing some information please use the comment form to let me know.

comments powered by Disqus