ID:2780956
 
This guide is a crosspost from my github gist. You may find the original gist here
  1. Use ubuntu (or debian works too for this guide) because i dont know the other distros lmao

  2. Run sudo dpkg --add-architecture i386 to enable 32 bits package lists

  3. Run sudo apt update to make sure package lists are updated

  4. Run sudo apt install libstdc++6:i386 to get the dependencies for BYOND

  5. Find the download link for BYOND's linux version from http://www.byond.com/download/, looks like http://www.byond.com/download/build/513/513.1536_byond_linux.zip

  6. Run wget <theurlyougot>

  7. Decompress the file you just downloaded somewhere unzip 513.1536_byond_linux.zip replacing the filename with the actual filename you have

  8. CD into the newly extracted byond directory

  9. You have two options here:

    1. Install system wide
    2. Install for your own user without admin rights
    Option 1: Install system wide Option 2: Install for your own user without admin rights
    1. Run sudo make install 1. Run make here
    2. Its going to give you a command to run that looks like source /somepath/byond/bin/byondsetup, run that command
    3. (Optional) Add that command to your startup script (.bash_profile/.profile). This step is optional if youre fine with running this command each time you open a shell you want to use BYOND in
  10. Run DreamDaemon, you should get the usage information

  11. (Optional) Run ldd yoursofile.so on each .so file in your codebase to verify that linkage is working properly. You should be looking for something that says its not found. If everything is OK move on to the next step.

  12. Run DreamDaemon yourcodebase.dmb -trusted

Troubleshooting:

Running ldd says that the file is not a dynamically linked executable

Try installing gcc-multilib with sudo apt install gcc-multilib


Im getting spammed with runtimes of Cannot load library <something>.so

  • Verify that the .so file actually exists
  • Verify that the user running DreamDaemon has the execute permission to the .so file (use ls -l to check the permissions and ownership)
  • Try to ldd the .so file and check if any library is marked as "(not found)" or is missing a version (/usr/lib/libstdc++.so.6: versionGLIBCXX_3.X.XX' not found ` is a common one and is somewhat easy to miss)
  • Run strace DreamDaemon yourcodebase.dmb | grep <something>.so to try to find what its trying to load and where and figure it out from there

The game is expecting an .so file but it doesnt exist!

If its rust_g, you can download a release from https://github.com/tgstation/rust-g/releases or follow the instructions https://github.com/tgstation/rust-g to compile it yourself. If it is not rust_g, contact whatever smart dude your codebase has.


LDD says a library is not found, so now what?

Google ubuntu <yourlibraryfile thats not found> not found and chances are youll hit a stack overflow page that tells you what package to install to get the library


Running DreamDaemon says No such file or directory /somepath/byond/bin/DreamDaemon

Make sure libstdc++6:i386 is installed


wget/make/unzip not found

Run these commands depending on whats missing

  • wget: sudo apt install wget
  • make: sudo apt install make
  • unzip: sudo apt install zip

How do I do X on Y distro?

I dont know mane, this is a guide for ubuntu so stackoverflow.com or askubuntu.com are your friends