To install the game, mount your CD & run the installer with linux32 from the util-linux package :
# mount /dev/cdrom /media/cdrom $ linux32 bash /media/cdrom/setup.sh
Apply the last released patch :
$ linux32 bash tribes2-25034-cdrom-x86.run
$ ./tribes2.dynamic Inconsistency detected by ld.so: dl-version.c: 204: _dl_check_map_versions: Assertion `needed != NULL' failed!
./tribes2.dynamic is a very old ELF binary, and unfortunately it is very broken by modern standards:
libdl.so.2 (readelf -V ./tribes2.dynamic)libdl.so.2 (readelf -d ./tribes2.dynamic)You can use patchelf to fix this:
patchelf --add-needed libdl.so.2 ./tribes2.dynamic
$ ./tribes2.dynamic ./tribes2.dynamic: symbol lookup error: ./tribes2.dynamic: undefined symbol: __ti9exception
The missing function can be found in a very old libstdc++ (from gcc-2.95), you can use libstdc++-3-libc6.2-2-2.10.0.so from https://www.improbability.net/loki/
Now that we have all the old libs required, you would think “OK let's run it!” and try:
LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so" ./tribes2.dynamic ./tribes2.dynamic: symbol lookup error: ./tribes2.dynamic: undefined symbol: SDL_GetGamma
WTF ?
That function exist in SDL-1.2 source code (src/video/SDL_gamma.c) but isn't part of SDL-1.2 ABI.
The solution I choose is simple: I created another shim library.
Now we can start the game:
LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so:./tribes2shim.so" ./tribes2.dynamic -nologin