{"id":340,"date":"2011-08-17T00:30:16","date_gmt":"2011-08-16T22:30:16","guid":{"rendered":"\/\/www.mcgill.org.za\/stuff\/?p=340"},"modified":"2011-08-17T00:30:16","modified_gmt":"2011-08-16T22:30:16","slug":"windows-apps-for-linux-make-linux-horrible","status":"publish","type":"post","link":"https:\/\/www.mcgill.org.za\/stuff\/archives\/340","title":{"rendered":"Windows Apps for Linux make Linux horrible"},"content":{"rendered":"<p>InstallShield is a wonderful tool &#8230; on Windows.\u00a0 In a previous decade, I used it to install some bloatware I wrote that wasn&#8217;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.<\/p>\n<p>Today I learned that there is InstallShield for Linux too, but, well, it&#8217;s not good.\u00a0 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&#8217;s for example), but it has the unfortunate effect of making Linux horrible like Windows has always been.<\/p>\n<p>SuperMicro, in their wisdom, decided to publish their IPMI and KVM tool as a Java Applet.\u00a0 You can download it from the on-board IPMI thing thang &#8230; it just doesn&#8217;t run, because it relies on the presence of shared libraries that are by no means default.\u00a0 When I downloaded their IPMI tool from their <a href=\"ftp:\/\/ftp.supermicro.com\/utility\/IPMIView\/Linux\/\">FTP site<\/a>, besides that it contained 50Mb of bloaty Java Run Time Environment, presumably because Java on this platform is nothing like Java on any other &#8212; besides that, it didn&#8217;t work.\u00a0 Running the .bin file through <code>sh<\/code> gave this error message:<\/p>\n<blockquote><p>This application requires a Java Run Time Environment (JRE)<br \/>\nto run. Searching for one on your computer was not successful.<br \/>\nPlease use the command line switch -is:javahome to specify<br \/>\na valid JRE. For more help use the option -is:help.<\/p><\/blockquote>\n<p>Reading the code was entirely unenlightening (it doesn&#8217;t have a clear reason for failing &#8211; it just happens to fail to extract the JRE component all over my hard disk).\u00a0 The SuperMicro forums had nothing interesting, but I found the <a href=\"http:\/\/community.installshield.com\/archive\/index.php?t-133651.html\">answer<\/a> in an InstallShield forum.<\/p>\n<p>To make it work it really wants to be run like this:<\/p>\n<pre>chmod 755 IPMIView20-Linux_v2.7.23_Build110531.bin\r\n.\/IPMIView20-Linux_v2.7.23_Build110531.bin<\/pre>\n<p>Hang, you would think they would know about handing running a script with a script interpreter.<\/p>\n<p>Once it&#8217;s installed, you can run it like so:<\/p>\n<pre>java -jar IPMIView.jar\r\n<\/pre>\n<p>Now all I really want from this thing is the KVM component, which happens to run as a separate application.<br \/>\nRunning just <code>java -jar iKVM.jar<\/code> doesn&#8217;t work &#8211; it says &#8220;no iKVM32 in java.library.path&#8221;.  When using the supplied JRE, it does manage to run the application, which shows up in the process list as this:<\/p>\n<pre>java -cp .:::::$PWD\/iKVM.jar:$PWD\/IPMIView20.jar:$PWD\/TrapView.jar:::::: \\\r\n\t-Djava.library.path=. \\\r\n\t-D tw.com.aten.ikvm.KVMMain \\\r\n\t$IP $USERNAME $PASSWORD null 5900 623 2 0<\/pre>\n<p>When using openjdk, this seems to work just as well (or better):<\/p>\n<pre>java -Djava.library.path=. -jar iKVM.jar \\\r\n  $IP $USERNAME $PASSWORD null 5900 623 2 0<\/pre>\n<p style=\"text-align: left;\">And it looks wonderful:<br \/>\n<a href=\"\/\/www.mcgill.org.za\/stuff\/wp-content\/uploads\/2011\/08\/supermicro-kvm.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-350 aligncenter\" title=\"SuperMicro KVM\" src=\"\/\/www.mcgill.org.za\/stuff\/wp-content\/uploads\/2011\/08\/supermicro-kvm.jpg\" alt=\"\" width=\"399\" height=\"299\" srcset=\"https:\/\/www.mcgill.org.za\/stuff\/wp-content\/uploads\/2011\/08\/supermicro-kvm.jpg 399w, https:\/\/www.mcgill.org.za\/stuff\/wp-content\/uploads\/2011\/08\/supermicro-kvm-300x224.jpg 300w\" sizes=\"auto, (max-width: 399px) 100vw, 399px\" \/><\/a>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 &#8212; but I suddenly have something that works, so I&#8217;m going to stop.\u00a0 I&#8217;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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>InstallShield is a wonderful tool &#8230; on Windows.\u00a0 In a previous decade, I used it to install some bloatware I wrote that wasn&#8217;t about to be installed any other way. Since Windows has no standards and no proper scripting (especially &hellip; <a href=\"https:\/\/www.mcgill.org.za\/stuff\/archives\/340\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[38,35,40,39,37,190,36],"class_list":["post-340","post","type-post","status-publish","format-standard","hentry","category-stuff","tag-ipmi","tag-java","tag-junk","tag-kvm","tag-linux","tag-stuff","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/posts\/340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/comments?post=340"}],"version-history":[{"count":11,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/posts\/340\/revisions"}],"predecessor-version":[{"id":353,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/posts\/340\/revisions\/353"}],"wp:attachment":[{"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/media?parent=340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/categories?post=340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mcgill.org.za\/stuff\/wp-json\/wp\/v2\/tags?post=340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}