30

This question already has an answer here:

agung@agung-K43SJ:~$ steam
Running Steam on ubuntu 15.04 64-bit

STEAM_RUNTIME is enabled automatically

Installing breakpad exception handler for appid(steam)/version(0)

libGL error: unable to load driver: nouveau_dri.so

libGL error: driver pointer missing

libGL error: failed to load driver: nouveau

libGL error: unable to load driver: swrast_dri.so

libGL error: failed to load driver: swrast

Before that, I also tried installing Steam from Terminal, but it didn't launch after having downloaded the update.

Can anyone help me finding a solution to install Steam?

marked as duplicate by Eliah Kagan, Yaron, Charles Green, Elder Geek, Eric Carvalho Sep 10 '17 at 17:32

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Did you make sure your system was completely up to date before trying that? If not try again. Also if you installed any graphics drivers you might want to disable them as steam likes to select its own graphics video drivers. – gyropyge Jun 13 '15 at 6:16
  • Did you install any additional drivers ? nouveau, referenced here, is the open source driver for nvidia and is not good at gaming – Mark Kirby Jun 13 '15 at 8:15
64

Short version:

Start steam in the terminal using:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

instead of just steam

Long version:

Steam can’t open nouveau_dri.so, the shared library responsible for communicating with the graphics driver. To check if the driver is OpenGL enabled run:

DISPLAY=:0 glxinfo | grep -i direct

The output should be:

direct rendering: Yes

Running steam in debug mode:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Gives us the output where the following lines gives us hint:

libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/nouveau_dri.so
libGL: dlopen /usr/lib/i386-linux-gnu/dri/nouveau_dri.so failed (/home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/dri/nouveau_dri.so))

It seems that steam uses different version of libstdc++.so.6. Lets check which version steam uses:

ls -l ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6  

lrwxrwxrwx 1 user user 19 Jul 18  2014 /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.18

So Steam loaded LibC6 with ABI version 18 where driver expects version 20.The solution is to tell OS to preload the proper LibC6 version using LD_PRELOAD variable:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

The somewhat non-intuitive $LIB parameter gets expanded in ld.so to the right path based on the platform of the process being started (man 8 ld.so for details).

You can create script with the following content to run it instead of steam:

#!/bin/bash
# Export so all child processes are affected as well
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
#export LIBGL_DEBUG=verbose
steam

A better script could check if the global LibC6 version is newer than the one in STEAM_RUNTIME and only then LD_PRELOAD’s.

More details can be found on here. Note that I tested it on Debian and now it has been tested on Ubuntu vivid 15.04 and works fine.

  • 5
    This solution also works on Ubuntu 16.04 - I had the same error messages and this method (setting LD_PRELOAD) allowed Steam to run correctly. – Code Friendly Jun 21 '16 at 18:56
  • This also works on Linux Mint 18.1 – Zoey Hewll May 23 '17 at 1:14
  • Doesn't work on Ubuntu Gnome 17.10. Error message remains. pastebin.com/gbSz3WwT The answer from philfaint helped me on my system though. – Mathias Conradt Dec 27 '17 at 11:30
  • also works on Debian 9.3 (DE Mate) – mountpoint Mar 14 '18 at 16:19
  • I tried doing the same, and it crashed anyway on me. Kunbuntu 18.04 LTS. See the gist of the dump at: gist.github.com/flajann2/aa7777926a8cf1347bc11fce17d34e9a – flajann May 26 '18 at 12:01
27

Another solution, that helped me to launch Steam client was found here -

https://wiki.archlinux.org/index.php/Steam/Troubleshooting

I ran this command -

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" -o -name "libgpg-error.so*" \) -print -delete

and now Steam launch without any additional pre-loads. Hope this will help everyone who has the same issue on Ubuntu 16.04

  • 4
    underrated command, this works on Ubuntu 16.10 – Zeppe Dec 24 '16 at 22:15
  • this worked for me on Linux Mint 18, thanks! – Chris Apr 17 '17 at 12:25
  • 1
    Worked on 18.04 LTS – Dave May 21 '18 at 1:17
  • This doesn't work for me at all, and see the gist of the dump: gist.github.com/flajann2/3e6dcc3ef391eae76a99208da2536d1f – flajann May 26 '18 at 12:13
  • Can anyone explain why this works? Seems like deleting .so files should break things. Is this just short circuiting something important? – Bratchley Jul 26 '18 at 13:52
6

Maybe the gcc libs in the steam runtime are incompatible with your mesa drivers. Back up your home folder, then try to delete these library files:

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1
  • Backing up first is a good idea – Paulius Šukys Jan 24 '16 at 23:02
  • @PauliusŠukys In principle yes, but you can also just delete the whole folder if something goes wrong and Steam will download it again... just maybe don't keep your games library in there. – Nobody Jul 25 '16 at 14:42
4

Apparently this error happens when one try to install Steam in a 64bits Ubuntu 15.04.

I did a fresh Ubuntu 15.04 install in my machine. I also installed the NVIDIA proprietary graphics drivers.

I was getting this error, but after looking carefully I noticed that steam is a 32bits application, so I installed some 32bits libraries and I reinstalled the NVIDIA driver so Steam was able to launch.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./NVIDIA-Linux-x86_64-352.63.run

Where the last command should be your driver installer.

When the driver installer asks to install 32bits libraries, hit yes.

Not the answer you're looking for? Browse other questions tagged or ask your own question.