When attempting to start a previously working Don't Starve Together dedicated server on Linux using steamcmd, it fails:
Redirecting stderr to '/home/user/Steam/logs/stderr.txt' Logging directory: '/home/user/Steam/logs' [ 0%] Checking for available updates... [----] Verifying installation... UpdateUI: skip show logoSteam Console Client (c) Valve Corporation - version 1721172922 -- type 'quit' to exit -- Loading Steam API...OK Connecting anonymously to Steam Public...OK Waiting for client config...OK Waiting for user info...OK Update state (0x5) verifying install, progress: 0.00 (0 / 3736496702) Update state (0x5) verifying install, progress: 26.94 (1006792808 / 3736496702) Update state (0x5) verifying install, progress: 54.81 (2047949466 / 3736496702) Update state (0x5) verifying install, progress: 80.85 (3020943668 / 3736496702) Success! App '343050' fully installed. ./dontstarve_dedicated_server_nullrenderer_x64: error while loading shared libraries: libhogweed.so.4: cannot open shared object file: No such file or directory ./dontstarve_dedicated_server_nullrenderer_x64: error while loading shared libraries: libhogweed.so.4: cannot open shared object file: No such file or directory
Investigating the binary further I can see the following links:
ldd dontstarve_dedicated_server_nullrenderer_x64 linux-vdso.so.1 (0x00007f1f8ace2000) libSDL2-2.0.so.0 => ./lib64/libSDL2-2.0.so.0 (0x00007f1f8abe9000) libcurl-gnutls.so.4 => ./lib64/libcurl-gnutls.so.4 (0x00007f1f8a600000) librt.so.1 => /lib64/librt.so.1 (0x00007f1f8abd0000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1f8abcb000) libfmodevent64.so => ./lib64/libfmodevent64.so (0x00007f1f8a000000) libfmodex64.so => ./lib64/libfmodex64.so (0x00007f1f89a00000) libsteam_api.so => ./lib64/libsteam_api.so (0x00007f1f8ab63000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/13/libstdc++.so.6 (0x00007f1f89600000) libm.so.6 => /lib64/libm.so.6 (0x00007f1f8aa79000) libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/13/libgcc_s.so.1 (0x00007f1f8aa51000) libc.so.6 => /lib64/libc.so.6 (0x00007f1f89200000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f1f8aa4a000) libidn.so.11 => ./lib64/libidn.so.11 (0x00007f1f88c00000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f1f8a9f5000) libz.so.1 => /usr/lib64/libz.so.1 (0x00007f1f8a9d6000) libgnutls.so.30 => /usr/lib64/libgnutls.so.30 (0x00007f1f8a407000) libgcrypt.so.11 => ./lib64/libgcrypt.so.11 (0x00007f1f88600000) librtmp.so.0 => ./lib64/librtmp.so.0 (0x00007f1f88000000) libfmodex64-4.44.64.so => ./lib64/libfmodex64-4.44.64.so (0x00007f1f87a00000) /lib64/ld-linux-x86-64.so.2 (0x00007f1f8ace4000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007f1f8a903000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007f1f8a8d2000) libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007f1f8a8c9000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007f1f8a8ba000) libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x00007f1f8a8b3000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f1f8a8a1000) libidn2.so.0 => /usr/lib64/libidn2.so.0 (0x00007f1f8a86d000) libunistring.so.5 => /usr/lib64/libunistring.so.5 (0x00007f1f89e47000) libtasn1.so.6 => /usr/lib64/libtasn1.so.6 (0x00007f1f8a3f1000) libnettle.so.8 => /usr/lib64/libnettle.so.8 (0x00007f1f8a39a000) libhogweed.so.6 => /usr/lib64/libhogweed.so.6 (0x00007f1f8a34e000) libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f1f8a2a0000) libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007f1f89e1a000) libhogweed.so.4 => not found libnettle.so.6 => not found
Notice the the odd links. We have access to libnetttle.so.8 and libhogweed.so.6, but the program is also looking for libhogweed.so.4 and libnettle.so.6?? Why would we need to use both? This should be linked to one version, not both. Going into the `bin64/lib64`, we can see similar with `librtmp.so.0`.
ldd librtmp.so.0 linux-vdso.so.1 (0x00007f3b39376000) libgnutls.so.30 => /usr/lib64/libgnutls.so.30 (0x00007f3b39163000) libhogweed.so.4 => not found libnettle.so.6 => not found libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f3b390b5000) libz.so.1 => /usr/lib64/libz.so.1 (0x00007f3b39096000) libc.so.6 => /lib64/libc.so.6 (0x00007f3b38a00000) libidn2.so.0 => /usr/lib64/libidn2.so.0 (0x00007f3b39060000) libunistring.so.5 => /usr/lib64/libunistring.so.5 (0x00007f3b38c47000) libtasn1.so.6 => /usr/lib64/libtasn1.so.6 (0x00007f3b3904a000) libnettle.so.8 => /usr/lib64/libnettle.so.8 (0x00007f3b389a9000) libhogweed.so.6 => /usr/lib64/libhogweed.so.6 (0x00007f3b3895d000) /lib64/ld-linux-x86-64.so.2 (0x00007f3b39378000)
Again, we see two version of libnettle and libhogweed are linked? We should simply need one of those to suffice. Both of these files come from the `nettle` package/library. Also, I can't do the dirty work around of simply symlinking the versions because librtmp is depends on the specific versions:
./dontstarve_dedicated_server_nullrenderer_x64: /usr/lib64/libnettle.so.8: version `NETTLE_6' not found (required by ./lib64/librtmp.so.0) ./dontstarve_dedicated_server_nullrenderer_x64: /usr/lib64/libhogweed.so.6: version `HOGWEED_4' not found (required by ./lib64/librtmp.so.0) ./dontstarve_dedicated_server_nullrenderer_x64: /usr/lib64/libnettle.so.8: version `NETTLE_6' not found (required by ./lib64/librtmp.so.0) ./dontstarve_dedicated_server_nullrenderer_x64: /usr/lib64/libhogweed.so.6: version `HOGWEED_4' not found (required by ./lib64/librtmp.so.0)
Install on Linux where the older version of libnettle is not present.
-
2
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now