Skip to content

Issue with trying to run Descent 2 on Ubuntu Linux #751

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
CeeJay1969 opened this issue Mar 8, 2025 · 1 comment
Open

Issue with trying to run Descent 2 on Ubuntu Linux #751

CeeJay1969 opened this issue Mar 8, 2025 · 1 comment
Labels
Game bundled runtime library Issues from game bundled libraries which are also provided by the Steam runtime

Comments

@CeeJay1969
Copy link

Hello,

I am using Ubuntu Linux with the Mint desktop and I purchased Descent 2 on Steam.

When I try to run the game from my desktop, the splash screen displays but then it quits immediately afterwards.

I ran the game at the command prompt and I see this error:

Starting DOSBox
/home/chris/.steam/debian-installation/steamapps/common/Descent 2/dosbox/dosbox_x86_64: error while loading shared libraries: libcaca.so.0: cannot open shared object file: No such file or directory

It appears the library is not present, but I did check for the libcac.so.0 library and it is there:
$ ldconfig -p | grep libcaca
libcaca.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcaca.so.0
libcaca++.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcaca++.so.0

Any assistance would be appreciated.

Thank you in advance.

@kisak-valve kisak-valve transferred this issue from ValveSoftware/steam-for-linux Mar 8, 2025
@smcv
Copy link
Contributor

smcv commented Apr 3, 2025

This is a game-specific packaging problem, so please report it to the developer/publisher of this specific game, with a link to this issue. There is a list of libraries that the Steam Runtime guarantees to provide and libcaca.so.0 is not one of them.

In older versions of Steam, games ran in an environment where libraries from the host system are available, so this game would often have worked anyway "by mistake" because the host system happens to have provided libcaca.so.0 (like yours does). However, this would often result in the game stopping working a few years later.

In recent versions of Steam, games run in a container environment by default (the "Steam Linux Runtime"). This is designed to provide a predictable set of libraries, so that if a game works today, it's reasonably likely that it will still work in 10 years' time.

libcaca.so.0 is a library for drawing graphics using multicoloured ASCII-art, more of a toy than a genuinely useful thing, so I'm fairly sure this game isn't actually going to be using it - but because of how library dependencies work in Linux, it will fail to start if the library is missing. I think the game developer/publisher has included someone else's precompiled copy of libSDL-1.2.so.0 (probably from Debian or Ubuntu) which has been compiled with the libcaca feature enabled.

Workarounds (for users)

Either of these options is likely to work as a workaround:

  1. Right-click on the game in your Steam library → Properties → Compatibility → Force the use of… → choose "Legacy runtime". This will make the game pick up your system copy of /lib/x86_64-linux-gnu/libcaca.so.0.
  2. Or, go into the steamapps/common/Descent 2 directory and rename dosbox/libs/i686/libSDL-1.2.so.0 and dosbox/libs/x86_64/libSDL-1.2.so.0 to a different filename so that they won't be used (for example rename them both to libSDL-1.2.so.0.shipped). The result will be that the Steam Runtime's included copy of sdl12-compat (which is almost certainly better-maintained) will be used instead.
    • You could optionally also rename libmikmod.so.2 and libpng12.so.0 because we provide those, too.
    • You will need to keep libSDL_net-1.2.so.0, libSDL_sound-1.0.so.1 and libsmpeg-0.4.so.0: we don't provide those.

Solutions (for the developer/publisher)

The developer/publisher should choose one:

  1. Stop including old copies of libSDL-1.2.so.0 with the game. The Steam Runtime already guarantees to provide an up-to-date library that is backwards-compatible with this one, so the included copy is unlikely to be helping, and will sometimes cause problems like this one.
    • If the developer/publisher ships this game both on Steam and elsewhere, they're welcome to keep including this library in the non-Steam version: the version on Steam doesn't necessarily need to be 100% identical.
    • They can probably also remove libmikmod.so.2 and libpng12.so.0 because we provide those, too.
    • They will need to keep providing libSDL_net-1.2.so.0, libSDL_sound-1.0.so.1 and libsmpeg-0.4.so.0: we don't provide those.
  2. Or, if they want to keep shipping a copy of libSDL-1.2.so.0 that is under their control, they will need to make sure that they also include most of its dependencies, such as libcaca.so.0. They should not provide the graphics stack (libGL.so.1, etc.) and they do not need to provide libraries that are on our list.
  3. Or, they could recompile their copy of libSDL-1.2.so.0 and disable features that require libraries that are not on our list.
  4. Or, they could edit the dosbox/dosbox script so that it adds dosbox/libs/i686 or dosbox/libs/x86_64 as the last item in LD_LIBRARY_PATH, rather adding it as the first item as I suspect it does now. That will mean that the libraries provided by the Steam Runtime will "win" if the same library exists in both places.

@kisak-valve kisak-valve added the Game bundled runtime library Issues from game bundled libraries which are also provided by the Steam runtime label Apr 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Game bundled runtime library Issues from game bundled libraries which are also provided by the Steam runtime
Projects
None yet
Development

No branches or pull requests

3 participants