protonscr

Error about missing libatiuki.so.1 after installing new Nvidia driver 331

steamclosed
ValveSoftware/steam-for-linux#3128 · opened 2014-01-29 by TheSentry · updated 2014-02-03 · 6 comments · github
TTheSentry 2014-01-29 github

I'm using Ubuntu 12.04.1 64bit. (I don't want to upgrade right now, I don't have the time.)
Graphics: Nvidia GeForce 560 Ti

I get the following error when starting steam:

Error: You are missing the following 32-bit libraries, and Steam may not run:
libatiuki.so.1

And when I click that away:

Fatal Error: Failed to load steamui.so

So, the steam.sh script is complaining about a missing ATI driver file (fglrx package), although I have an Nvidia card and drivers.

I poked around in the steam.sh and executed the line that checks for missing libraries

LD_PRELOAD= ldd /opt/Steam/ubuntu12_32/steamui.so | grep "=>" | grep -v linux-gate | grep -v / | awk '{print $1}'

which gives the output

libcef.so
liboverride.so
libsteam.so
libtier0_s.so
libvstdlib_s.so
libSDL2-2.0.so.0

but obviously a different one when I just run the command steam.

I could try to install the fglrx package for AMD cards, but I shouldn't need it and I'm afraid it could confuse and mess up my graphics.

Any ideas? This seems to be a very new problem and Google gives me only 3 search results, all about AMD cards.

A little more background:
After some Steam client update last year, it started complaining about the OpenGLX context not using direct rendering, which worked fine before. My (and others) guess was that I needed newer nVidia drivers, which were not available for my version of Ubuntu (I don't want to upgrade right now, see above.)

Yesterday, nvidia-331 and so on became available and I installed them, hoping that would fix the problem. But now I get the error described above

TTele42 2014-01-29 github

Not a problem with nvidia-drivers 331.38 on gentoo linux, also, on my preliminary search for libatiuki.so.1 I could not find any references. Most likely an ubuntu packaging issue.

TTheSentry 2014-01-29 github

The libatiuki.so.1 is part of the fglrx package, the AMD driver. But I rather think that the steam.sh script, which checks everything before running the actual binary and setting all the environment variables, is broken.

Jjohndrinkwater 2014-01-31 github

If you’re still getting the direct rendering message, you likely have a broken graphics set‐up ‐ as installing nvidia-331 should sort that out for you. Did you do anything like removing gfx libs manually?

Staying on 12.04 is fine for now, don’t worry about that :)

TTheSentry 2014-01-31 github

No, I'm not getting the DRI message anymore, probably because the client doesn't even get that far. When I got the DRI message, the client would start nonetheless, but the games had problems.

Now, the You are missing the following 32-bit libraries message is displayed by the steam.sh script and only after that the steam client tries to start, but fails with Fatal Error: Failed to load steamui.so, i.e. it doesn't even open anymore.

The interesting part is that I can't reproduce the output of the command to find the missing libraries when running it manually, so it's hard to determine where it goes wrong.

I also didn't remove any libraries manually. If there is some specific output I could post to provide more information, I'd be happy to do so.

TTheSentry 2014-01-31 github

Okay, I got it! In the end, it was easy, but still.

Short version

Solution: I deleted /usr/lib32/libGL.so.1.2 and reinstalled libgl1-mesa-glx:i386
Explanation: This is a very old and frequently updated installation of Ubuntu. And back in the days, I had an ATI/AMD graphics card and its drivers installed. Seems like the deinstallation didn't clean everything up and the /usr/lib32/libGL.so.1.2 was still built against the AMD files. After I've deleted this file and reinstalled libgl1-mesa-glx:i386, the symlinks to it were removed, too, and the Nvidia driver is now found. Steam works fine again.

Long version

I could reproduce the error by running the command to find missing libraries in steam.sh with the correct LD_LIBRARY_PATH:

LD_LIBRARY_PATH=/opt/Steam/ubuntu12_32:/opt/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:/opt/Steam/ubuntu12_32/steam-runtime/i386/lib:/opt/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:/opt/Steam/ubuntu12_32/steam-runtime/i386/usr/lib:/opt/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:/opt/Steam/ubuntu12_32/steam-runtime/amd64/lib:/opt/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:/opt/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib::/usr/lib32
LD_PRELOAD= ldd /opt/Steam/ubuntu12_32/steamui.so | grep "=>" | grep -v linux-gate | grep ati

which gave

libatiuki.so.1 => not found

This error didn't show up when I removed /usr/lib32 from the library path. That made me inspect that folder and behold, I've found

libGL.so -> mesa/libGL.so  (there was no mesa directory)
libGL.so.1 -> libGL.so.1.2
libGL.so.1.2

The symlinks had the same timestamp as the nvidia-331 folder, so I guessed it had something to do with the latest update. I then tried reinstalling

  • ia32-libs
  • nvidia-331
  • libgl1-mesa-dri
  • libgl1-mesa-glx:i386

but nothing worked. After manually deleting the symlinks and running steam.sh it worked again, but reinstalling libgl1-mesa-glx:i386 created the symlink to the wrong libGL.so.1.2 again. Only after deleting that, everything is fine again.

In retrospect, I think that probably was also the reason for the "OpenGLX context not using direct rendering" problem from before. Finally, my journey has come to an end and I can play again under Linux. Which is actually bad, I have work to do ...

Jjohndrinkwater 2014-02-03 github

Glad you got it sorted! Closing as this was a distro/package funk.

Nothing extracted yet.