protonscr

steam-runtime not properly unpacked: missing .so files (steamui.so and others) on Debian 10

steamclosed Steam clientDistro Family: Debian
ValveSoftware/steam-for-linux#6882 · opened 2020-02-10 by drlight-code · updated 2022-07-23 · 9 comments · github
Ddrlight-code 2020-02-10 github

Your system information

  • Steam client version (build number or date):
    1.0.0.61 (latest) but I also tried various other versions.

  • Distribution (e.g. Ubuntu):
    Debian GNU/Linux 10 (buster)

  • Opted into Steam client beta?: [Yes/No]
    No

  • Have you checked for system updates?: [Yes/No]
    Yes

Please describe your issue in as much detail as possible:

I want to install steam on Debian buster, current stable. To do so what I normally do is download the steam_latest.deb package, unpack it manually with dpkg-deb, run the steam installer and everything would work just fine.

A while ago (feels like ~6 months) this stopped working because the installer, after downloading the update archive, during extraction, would abort with "Fatal error: failed to load steamui.so".
On the commandline I get the following output:

xxx@xxx:~/local/steam$ ./steam
Setting up Steam content in /home/xxx/.local/share/Steam
Running Steam on debian 10 64-bit
STEAM_RUNTIME is enabled automatically
Pins potentially out-of-date, rebuilding...
Installing breakpad exception handler for appid(steam)/version(0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Failed to load steamui.so - dlerror(): steamui.so: cannot open shared object file: No such file or directory
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".

I repeatedly looked into this issue for the last months without success, but now I really depend on being able to continue developing my VR applications on this Linux box.

As opposed to the many problem reports you find on the internet, including this bug tracker (I read them all), note that steamui.so is not missing some transitive system dependency, but the steamui.so file itself simply does not exist. I verified this, searching through the bootstrap archive, all possible packages on repo.steampowered.com, ~/.steam, ~/.local/share/Steam, /tmp, /var etc. I used strace (also monitoring forked child processes) to monitor everything the installer would do and I'm rather sure that the steamui.so file simply does not get written anywhere.

I have the 32 bit nvidia and GL libraries installed and can run glxgears from mesa-utils:i386 just fine. I tried using the latest deb from the webpage, but also various older releases, the tar archives, even that flatpak archive from flathub, all with the same result.

Where and how should the steamui.so file normally land on my system? Thanks in advance.

Ddrlight-code 2020-02-10 github

I went and installed steam on an Archlinux system, using the official package without any issues. I tried copying over the steamui.so file that is located on that system under ~/.local/share/Steam/ubuntu12_32 to the respective location on the debian system. The installer now progresses further, but complains about a number of missing .so files that I then also mirrored onto the debian system in the respective folders:

./ubuntu12_32/
steamui.so

libtier0_s.so
libvstdlib_s.so
libv8.so
libvideo.so

libicui18n.so
libicuuc.so
libavcodec.so.57
libavformat.so.57
libavresample.so.3
libavutil.so.55
libswscale.so.4

./ubuntu12_32/steam-runtime/lib/i386-linux-gnu/
libbz2.so.1.0

./ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/
libva.so.2
libbz2.so.1.0
libvdpau.so.1
libva.so.2
libva-x11.so.2

For the last 2 blocks, debian steam wasn't able to locate them in the mirrored steam-runtime/usr/lib/i386-linux-gnu/ folder, so I put them into ubuntu12_32 instead. Interestingly, now it fails again with the same UI error message Fatal Error: failed to load steamui.so, however I don't get any error output on the commandline whatsoever.

xxx@xxx:~$ steam
Running Steam on debian 10 64-bit
STEAM_RUNTIME is enabled automatically
Pins up-to-date!
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
Looks like steam didn't shutdown cleanly, scheduling immediate update check
xxx@xxx:~$ 
Ddrlight-code 2020-02-10 github

I just copied the whole ~/.local/share/Steam folder from the Arch system over the respective folder on the Debian machine and now steam succeeded in updating itself and is actually running. This problem needs to be resolved however, since we have been running into this problem repeatedly in all of our Debian machines. I have a workaround for now but would be glad to assist you in troubleshooting this further.

TTTimo 2020-02-17 github

Here's what I'm seeing on a blank buster system: https://gyazo.com/7bfdf72038b571e117a8a223fb9c059b

I used gdebi to install steam_latest.deb (from http://repo.steampowered.com/steam/)
Then sudo apt install libc6-i386 to get things going (the bootstrap warns about this too).

As you can see, steamui.so is present on the system, despite the error message.

Steam also warns that 32 bit libGL is not installed - which I think is the actual problem here.

You can run the follow to check your drivers and various other things: ~/.steam/steam/ubuntu12_32/steam-runtime/run.sh ~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-system-info

For 32 bit GL drivers:
sudo dpkg --add-architecture i386
sudo apt install libgl1-mesa-dri:i386 libgl1-mesa-glx:i386

(if you have NVidia drivers this is slightly different, but same idea)

Steam starts fine after this.

tl;dr:

  • steam_latest.deb is completely inadequate on Buster (we're working on this)
  • install 32 bit GL drivers
Ssmcv 2020-02-17 github

sudo apt install libc6-i386

Prefer to use libc6:i386 (after sudo dpkg --add-architecture i386) on vaguely recent Debian/Ubuntu systems.

As you can see, steamui.so is present on the system, despite the error message.

This is a known annoyance in dealing with the glibc runtime linker infrastructure, which Steam cannot change. The runtime linker just reports an errno value like ENOENT, which translates to a message like "No such file or directory". The natural assumption is that the missing file or directory is the one mentioned in the error message, but actually you'll get the same error message for any missing library that is depended on by the library that was originally wanted.

Ssmcv 2020-02-17 github

steamui.so is not meant to come from the Steam Runtime. It's meant to come from either the bootstrapper, or the Steam client auto-updating itself.

The Steam Runtime is only responsible for what's in .../ubuntu12_32/steam-runtime.

Ssmcv 2020-02-27 github

I want to install steam on Debian buster, current stable. To do so what I normally do is download the steam_latest.deb package, unpack it manually with dpkg-deb, run the steam installer and everything would work just fine.

This is not really a supported installation method, although if it used to work, I don't see any particular reason why it should have stopped working.

Please could you describe exactly what you do, step-by-step, on a fresh Debian 10 installation, to reproduce this issue? Ideally please start from a freshly-booted Debian Live image, or a clean installation onto an expendable machine or a virtual machine - using one of the Debian Live images would be ideal, because those are a known environment.

Ssmcv 2020-02-28 github

For comparison, these steps for installation without using the .deb worked OK for me on an official Debian 10 live-CD/USB x86_64 XFCE image, debian-live-10.3.0-amd64-xfce.iso. They are what's suggested in the README in the source package (.dsc, .tar.gz).

Limitations:

  • The udev rules are not installed automatically if you go this way. Copy them from steam/lib/udev/rules.d/ into /lib/udev/rules.d/ to make game controllers and Steam Remote Play work correctly.
Kkisak-valve maintainer 2022-06-17 github

Hello @drlight-code, are you still experiencing this issue on an up to date system?

Kkisak-valve maintainer 2022-07-23 github

Closing pending feedback.

Nothing extracted yet.