Windows Apps for Linux make Linux horrible

InstallShield is a wonderful tool … on Windows.  In a previous decade, I used it to install some bloatware I wrote that wasn’t about to be installed any other way. Since Windows has no standards and no proper scripting (especially in older versions), InstallShield is the only way of getting through the mass of incompatibilities and surprises between versions and installations.

Today I learned that there is InstallShield for Linux too, but, well, it’s not good.  It is sadly lacking in wonderfulness. In fact, it is a reminder that the good old days were only old, and not all good. Having InstallShield for Linux is wonderful for people who want to distribute their applications without thinking too hard (including the windows DLL’s for example), but it has the unfortunate effect of making Linux horrible like Windows has always been.

SuperMicro, in their wisdom, decided to publish their IPMI and KVM tool as a Java Applet.  You can download it from the on-board IPMI thing thang … it just doesn’t run, because it relies on the presence of shared libraries that are by no means default.  When I downloaded their IPMI tool from their FTP site, besides that it contained 50Mb of bloaty Java Run Time Environment, presumably because Java on this platform is nothing like Java on any other — besides that, it didn’t work.  Running the .bin file through sh gave this error message:

This application requires a Java Run Time Environment (JRE)
to run. Searching for one on your computer was not successful.
Please use the command line switch -is:javahome to specify
a valid JRE. For more help use the option -is:help.

Reading the code was entirely unenlightening (it doesn’t have a clear reason for failing – it just happens to fail to extract the JRE component all over my hard disk).  The SuperMicro forums had nothing interesting, but I found the answer in an InstallShield forum.

To make it work it really wants to be run like this:

chmod 755 IPMIView20-Linux_v2.7.23_Build110531.bin
./IPMIView20-Linux_v2.7.23_Build110531.bin

Hang, you would think they would know about handing running a script with a script interpreter.

Once it’s installed, you can run it like so:

java -jar IPMIView.jar

Now all I really want from this thing is the KVM component, which happens to run as a separate application.
Running just java -jar iKVM.jar doesn’t work – it says “no iKVM32 in java.library.path”. When using the supplied JRE, it does manage to run the application, which shows up in the process list as this:

java -cp .:::::$PWD/iKVM.jar:$PWD/IPMIView20.jar:$PWD/TrapView.jar:::::: \
	-Djava.library.path=. \
	-D tw.com.aten.ikvm.KVMMain \
	$IP $USERNAME $PASSWORD null 5900 623 2 0

When using openjdk, this seems to work just as well (or better):

java -Djava.library.path=. -jar iKVM.jar \
  $IP $USERNAME $PASSWORD null 5900 623 2 0

And it looks wonderful:
I really should do the world a service and reverse engineer the hacky quasi VNC protocol being used, which also allows resizing and media sharing — but I suddenly have something that works, so I’m going to stop.  I’m not even going to try and fix the problem that it requires write access to ISO images that will be simulated as CD-ROMs to the target machine.

This entry was posted in Stuff and tagged , , , , , , . Bookmark the permalink.