Hello Starbounders! Important: This thread is about installing missing libraries. If you don't know how to install the server read this howto. If you use a recent distribution, try to install the missing libraries with your packet-manager first: Debian/Ubuntu Code: sudo apt-get install libssl1.0.0 libfreetype6 libogg0 libgcc1 libpng12-0 libvorbis0a libvorbisfile3 Arch Code: pacman -S libpng12 Fedora Code: I don't know yet. Please tell me OpenSuse Code: I don't know yet. Please tell me Gentoo Code: emerge libpng:1.2 freetype openssl CentOS/Red Hat Code: You should read on If this does not help, read on! These information are condensed version of this thread, some PMs and this stackoverflow post. Disclaimer: I've no idea what I'm talking about. If anything goes wrong and your server ignites, I'm not responsible You want to run starbound-server on your favorite distribution, but cannot because of some missing libraries? You cannot install them? Or your distribution is too old? There is a solution. Works for (reported): CentOS 6.5, Ubuntu 11.x The first package is a tar.gz file with the needed libraries. They are taken from my desktop system, a Kubuntu 13.10 installation. Save the file next to your linux64/starbound_server or linux 32/starbound_server executable and extract it. It will probably overwrite some already existing .so files. For 64bit: Code: # Change to your starbound-server directory $ cd /path/to/your/starbound/linux64 installation # Download the libraries for 64bit $ wget http://www.fabrik17.de/files/starbound-server-x64-libdeps.tar.gz # Extract the 64bit libraries $ tar xvfz starbound-server-x64-libdeps.tar.gz For 32bit: Code: # Change to your starbound-server directory $ cd /path/to/your/starbound/linux32 installation # Download the libraries for 32bit $ wget http://www.fabrik17.de/files/starbound-server-x32-libdeps.tar.gz # Extract the 32bit libraries $ tar xvfz starbound-server-x64-libdeps.tar.gz Ok, now you are using libraries which should work fine. Try and start the server with ./launch_starbound_server.sh. Does it work? Yes? You are lucky. If you get errors like Code: ./starbound_server: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument or ./starbound_server: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libgcc_s.so.1) you will have to do some more work. But why? What's wrong? There is a piece of software called "the loader". It loads the other .so files into the program's memory so that it can use their functions. The path to this loader is hardcoded in all (dynamically linked) binaries. The default path is /lib64/ld-linux-x86-64.so.2. The problem is, that your loader needs to be compatible with the libc.so.6 I've provided in my tar.gz archive, but it obviously isn't. So we have to change the hardcoded path in starbound_server to a path where a compatible loader is saved. I've created a patch with bsdiff for this. It changes the path from /lib64/ld-linux-x86-64.so.2 to /tmp/ld-linux-x86-64.so.2. The following commands should do the work. You need to install bspatch for this. Important: There is an easier solution, which does not depend on patching the server! See this post of arcanemagick! For 64bit: Code: # Change to your starbound-server directory $ cd /path/to/my/starbound/installation/linux64 # Download the patch next to your starbound_server 64bit binary $ wget http://www.fabrik17.de/files/starbound-loader-64bit.bspatch # Apply the patch for 64bit $ bspatch starbound_server starbound_server_patched starbound-loader-64bit.bspatch # Make the new server executable $ chmod a+x starbound_server_patched # Rename the original one $ mv starbound_server starbound_server_org # Rename the patched server $ mv starbound_server_patched starbound_server # Copy the new loader from my tar.gz (the file in linux_loader-dont-know-if-you-need-this/) to /tmp/ and set the right permissions $ cp linux_loader-dont-know-if-you-need-this/ld-linux-x86-64.so.2 /tmp/ $ chmod 755 /tmp/ld-linux-x86-64.so.2 # Run the server $ ./launch_starbound_server.sh For 32bit: Code: # Change to your starbound-server directory $ cd /path/to/my/starbound/installation/linux32 # Download the patch next to your starbound_server 32bit binary $ wget http://www.fabrik17.de/files/starbound-loader-32bit.bspatch # Apply the patch for 32bit $ bspatch starbound_server starbound_server_patched starbound-loader-32bit.bspatch # Make the new server executable $ chmod a+x starbound_server_patched # Rename the original one $ mv starbound_server starbound_server_org # Rename the patched server $ mv starbound_server_patched starbound_server # Copy the new loader from my tar.gz (the file in linux_loader-dont-know-if-you-need-this/) to /tmp/ and set the right permissions $ cp linux_loader-dont-know-if-you-need-this/ld-linux.so.2 /tmp/ $ chmod 755 /tmp/ld-linux.so.2 # Run the server $ ./launch_starbound_server.sh That's it. Your starbound_server should start. FAQ Why does this have to be so difficult? I'm sure it will change during the beta. The starbound_server binary seems to be build against very recent libraries. Valve uses Ubuntu 12.04 as their reference regarding libraries. They also provide their own package of runtime libraries. Starbound could use them too. I don't trust your libraries! You can get them on your own. Install a recent Debian or Ubuntu, run "ldd starbound_server". This will show you the needed libraries. Gather and copy them to your incompatible distribution. I also don't trust your patch! Oh you, again! You can do it on your own. Get a hexeditor, open starbound_server and go to byte 0x200. There you will see the hardcoded path to the loader. Your new path to the working loader cannot be longer than the already existing path. If you chose a shorter path, replace the remaining character with nullbytes. Remarks You have to patch your server on every update. The patch should work for all coming updates. /tmp is normally wiped on a restart. If you restart your machine, copy it back there. Remember to set the right permissions. If you have any additions, a better workaround, or anything else, please let me know!