- I'm not a big fan of java (or any other bloated framework, especially if major versions are not backwards compatible)
- I hate installers that do things that we could really live without, or without users consent (eyecandy, toolbars, auto updaters etc.)
Last week at work I wanted to get JDk6 for JBoss based project. Since there are no tar.gz/tgz versions for 6u31 (like for JDK7), I dl'ed the i586-bin installer. My office server is openSuse 12.1 x86_64. I tried running the installer in different combinations.
chmod 755 jdk-6u31-linux-i586.bin ./jdk-6u31-linux-i586.bin sh jdk-6u31-linux-i586.bin
Outcome was mostly the same :
jdk-6u31-linux-i586.bin: line 113: ./install.sfx : Permission denied
Installer is mix of shell script - few hundred lines at beginning of the file, and a self extracting binary.
To determinate where the script ends and sfx starts run
less -N jdk-6u31-linux-i586.binor
less jdk-6u31-linux-i586.binand press = to see line numbers currently seen on screen.
exit 0 ^?ELF^A^A^A^@^@^.............. jdk-6u31-linux-i586.bin lines 144-189/327000 byte 5779/85292206 0%
To get the sfx part run
tail -n +189 jdk-6u31-linux-i586.bin > install.sfx
To run (uncompress) the self extracting binary
chmod 755 install.sfx ./install.sfx
I thought that I got what I needed, but at start JBoss 6 spitted out weired error. So I tried to check if everything is fine with the JDK.
cd jdk1.6.0_31 ./bin/java -version Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
After some googlin' for a reason to what could be the cause of the problem, I found a forum post suggesting that rt.jar could be missing.
find ./ -name rt.* returned : ./jre/lib/rt.pack
In bin folder I found unpack200
./bin/unpack200 --help
So I had the tool and means, next I had to find what needed to be unpacked
find ./ -name *.pack returned : ./lib/tools.pack ./jre/lib/charsets.pack ./jre/lib/jsse.pack ./jre/lib/deploy.pack ./jre/lib/javaws.pack ./jre/lib/plugin.pack ./jre/lib/rt.pack ./jre/lib/ext/localedata.pack
So let's get to it
./bin/unpack200 ./lib/tools.pack ./lib/tools.jar . . ./bin/unpack200 ./jre/lib/ext/localedata.pack ./jre/lib/ext/localedata.jar
After that everything worked fine.
If any1 want's to take a look at the script part of the installer :
head -n 188 jdk-6u31-linux-i586.bin > install.sh
You save my time... thanks a lot buddy!
ReplyDelete