Friday, January 05, 2007

The installation of Glassfish on a linux 64 machine can be tricky, so here are the steps to work around the problems you will face.

If you try to run ./sjsas_pe-9_0_01-p01-linux.bin directly, you'll get the following error message:

./sjsas_pe-9_0_01-p01-linux.bin: error while loading shared libraries:libstdc++.so.5: cannot open shared object file: No such file or directory

Well, it cannot find libstdc++.so.5. We can check this with ldd ./sjsas_pe-9_0_01-p01-linux.bin which returns libstdc++.so.5 => not found.

If you run LD_DEBUG=libs ./sjsas_pe-9_0_01-p01-linux.bin you'll see where it is looking for that library. Actually, you have this lib in /usr/lib64. But if you add this path to your LD_LIBRARY_PATH, you'll get this error message:
error while loading shared libraries: libstdc++.so.5: wrong ELF class: ELFCLASS64
That's because it is looking for a 32-bit version of this library. Unfortunately, you most likely do not have one. But you have another
32-bit version of this library, version 6. Just add a symbolic link in /usr/lib (ln -s libstdc++.so.6 libstdc++.so.5) and now the installation can start....
Well, not really. Now, it is complaining about the JVM. Yes, it also needs a 32-bit JVM to do the installation. But this is just for the installation; you'll be able to run your application server with a 64-bit JVM, so don't worry.
So, install a 32-bit JVM and run the installation. During the installation, it will ask you which JVM you want to use to run the application server.

You can finally remove your 32-bit JVM and the symbolic link.

Now, launch Glassfish and enjoy.

Franck