This problem on 64-bits systems is caused by /usr/lib
being earlier in the LD_LIBRARY_PATH
than /usr/lib32
. Steam tries the 64-bit libraries and complains, without looking any further.
It can be fixed however by in ~/Steam/steam.sh
but that file seems to be restored to the original version every time steam is ran.
I fixed it by creating a script that does this:
#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH
steam $*
This prepends /usr/lib32
to the library path, then starts steam (with the script's original arguments).
Now /usr/lib32
is found in the path before /usr/lib
, and steam will successfully use the 32-bit libraries.
You may also want to add the line
export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH
to /usr/bin/steam
, it will have the same effect, as long as you add it before the very last line. You'll need to sudo to edit /usr/lib/steam
.
- This has the added bonus that it's a better fix, since everything that starts steam (the application menu entry, file type associations, URI associations) will work correctly.
- The disadvantage is that
/usr/bin/steam
is likely to be overwritten when steam is updated.
I use the latter method, while keeping the script as a backup. That way, if /usr/bin/steam
gets overwritten, I can simply copy paste the line again from the script to fix it.
sudo aptitude install libgl1-mesa-glx:i386
shows 305 packages will be removed, and about 100 will be unresolved. As this looks like it will stuff up my system I suspect the best course of action is to dual boot Ubuntu with 64 libraries and 32bit library, or better, one primary system for most things, one 64bit install for games, and a 32bit instance on its own partition for 32 bit games.