Linux binary installers
In Spain, there are some regulations for public administrations regarding Technological Neutrality (Observatorio de Neutralidad Tecnológica) and maybe therefore this year the programs aiding informative declarations are “multiplatform”. Meaning that, supposedly compatible with Windows, MacOS X and Linux. For this great purpose they have used a JVM and an InstallShield .bin installer.
I will not get into the point that Java is not really portable, since there is no descent JVM for some platforms like my laptop’s PowerPC + Linux combination. This post goes for the difficulties using InstallShield installers in x86_64.
If we try to run the installer straight away…
saburo Desktop # ./informativas220.bin
Preparing to install…
Extracting the installation resources from the installer archive…
Configuring the installer for this system’s environment…
awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
hostname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directoryLaunching installer…
grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
Mhh… It seems to be some problem with libraries. Some googling and seems to be a problem already detected in other applications using this installers. For example Zend, and its team has been much more helpful with the community by documenting this workaround:
saburo Desktop # cp informativas220.bin informativas220.bin.bak
saburo Desktop # cat informativas220.bin.bak | sed “s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/” > informativas220.bin
Now it seems to work… Ouch! It doesn’t
Launching installer…
* run-java-tool is not available for sun-jdk-1.5 on x86_64
* IMPORTANT: some Java tools are not available on some VMs on some architectures
Googling a bit more and finally consulting the forums of my favourite Linux Distribution (Gentoo) I discovered that at some point the installer needs to know what to execute java files with, and run-java-tool is the one in charge of that. What I don’t get to know is why isn’t it present on x86_64 architectures!
But we can change that, how? With a symlink. We must create a symlink from run-java-tool to java in the directory where the binaries of the JVM are found.
jask@saburo ~ $ cd /usr/lib64/jvm/sun-jdk-1.6/jre/bin/
jask@saburo ~ $ ln -s java run-java-tool
Now it finally works… Multiplatform is a good word, but perhaps we all should care less about platforms and more about people using them, these would be real multiuser applications. The ones that someone can use without having to edit a binary file, XD.
