steam, nvidia drivers 310.32 and ubuntu
Hello.
I'm using Ubuntu 12.04 x64, I have Geforce 580 GTX.
Drivers were installed nvidia-current - all worked fine, but the game slowed down and offered to upgrade the video driver. Available from the repository drivers nvidia-experemental-304 and nvidia-experemental-310 (310.14) are not compatible with my graphics card (X-server will not start.) I downloaded from the site of nvidia driver 310.32 for my system and he got well, but does not run steam and games.
Now when I run steam, it show this error: "You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1."
how can I solve this problem?
< >
114/14 megjegyzés mutatása
32-bit libraries are included in the 64-bit driver installer, and installed by default, so you can be pretty sure they are not completely missing, BUT programs may be looking for them in the wrong place.

There is a file - /etc/ld.so.cache, which keeps track of where each library is installed, and a command - ldconfig, which can display and update the cache.

You can use "ldconfig -p" to display the cache contents. This is how it looks on my system with standard drivers from the repository:

$ ldconfig -p | grep libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/nvidia-current/libGL.so.1

As you can see, normally the 32-bit libraries are in /usr/lib32/nvidia-current. NVidia installer probably puts them somewhere else.

You can run "ldconfig" (or "ldconfig -v" to see more info) as root to update the cache. It may solve the problem. If it doesn't, you have to find manually where 32-bit NVidia libs are installed, add the directory to ldconfig configuration (/etc/ld.so.conf.d/ directory), and re-run ldconfig as root.
i have just this:
$ ldconfig -p | grep libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1


pp eredeti hozzászólása:
If it doesn't, you have to find manually where 32-bit NVidia libs are installed, add the directory to ldconfig configuration (/etc/ld.so.conf.d/ directory), and re-run ldconfig as root.
which file should I add and how do I find where 32-bit NVidia libs?
As an experiment, I made a snapshot of my system, and tried installing the driver on the snapshot in chroot. I noticed, that the installer actually asks, if you want 32-bit compatibility libraries. It also produces a log, in /var/log/nvidia-installer.log. If you don't remember how you answered the question, check the log:

# grep 32-bit /var/log/nvidia-installer.log
-> Install NVIDIA's 32-bit compatibility OpenGL libraries? (Answer: Yes)

Make sure it says: "Yes". Otherwise - reinstall the driver, and choose "Yes" this time.

32-bit libraries are installed in /usr/lib32 on my system, which is version 12.10. I guess it should be the same on 12.04. If you have ANY 32-bit compatibility packages installed, this path should already be in your ld.so configuration. For example, on my system, this is provided by libc6-i386 package:

$ grep -R /usr/lib32 /etc/ld.so.conf.d
/etc/ld.so.conf.d/zz_i386-biarch-compat.conf:/usr/lib32
[...]
$ dpkg -S /etc/ld.so.conf.d/zz_i386-biarch-compat.conf
libc6-i386: /etc/ld.so.conf.d/zz_i386-biarch-compat.conf
I would advice AGAINST adding /usr/lib/i386-linux-gnu/mesa to your ld.so configuration. It may make things work, but you really want to make sure you are using NVidia OpenGL libraries, not Mesa!

Let me simulate that on my system. This is what I have normally:

$ glxinfo [...] direct rendering: Yes server glx vendor string: NVIDIA Corporation server glx version string: 1.4 [...] client glx vendor string: NVIDIA Corporation client glx version string: 1.4 [...] OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GeForce 9600 GT/PCIe/SSE2 OpenGL version string: 3.3.0 NVIDIA 313.09 OpenGL shading language version string: 3.30 NVIDIA via Cg compiler

And this is with Mesa instead of NVidia libraries:

$ LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa/ glxinfo [...] direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose) server glx vendor string: NVIDIA Corporation server glx version string: 1.4 [...] client glx vendor string: Mesa Project and SGI client glx version string: 1.4 [...] OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GeForce 9600 GT/PCIe/SSE2 OpenGL version string: 1.4 (2.1.2 NVIDIA 313.09)

As you can see, by doing that, I lost direct rendering, and downgraded my OpenGL version from 3.30 to 1.4 (and lost many OpenGL extensions, not shown here for brevity).

Will it work? Yes, kinda, maybe, but very badly.
The problem is, to test 32-bit OpenGL on your system, you need 32-bit version of glxinfo. Unfortunately, you can't install both 64 and 32-bit versions, because they will conflict with each other - both contain same file names, and Ubuntu doesn't ship something like "glxinfo32".

What I would propose, is this:

gektor3000 eredeti hozzászólása:
thank you for you help

my problem solution:
http://steamcommunity.com/app/221410/discussions/0/864959336441792994/#c864959336494129639

I added the following line in the /etc/ld.so.con.f/x86-64-linux-gnu_GL.conf

/usr/lib32

It works great. Right now I'm playing CSS
/usr/lib32 contains nvidia driver's libraries
This just started happening to me. It's not because I didn't install the 32bit components. I did. I reinstalled and paid very careful attention to it.

I just updated the kernel and following this I updated to the latest nvidia driver.

I'm also not interested in the open source drivers for this or any other component of the video subsystem.

@jota87r the folder is: /etc/ld.so.conf.d
Legutóbb szerkesztette: Jim; 2013. ápr. 10., 15:41
I had the same problem, and tried to do the ldconfig trick of adding /usr/lib32. Unfortunately, adding it made my desktop crash after rebooting.

After digging through steam files, I found the startup script of Steam in /usr/<login>/.local/share/Steam/steam.sh. On line 640, it's written:

export LD_LIBRARY_PATH="$STEAMROOT/$PLATFORM:$LD_LIBRARY_PATH"

In case you people are somewhat newbies on Linux, LD_LIBRARY_PATH is an alternate way to setup new directories for the system to search for libraries. So, I basically changed it to:

export LD_LIBRARY_PATH="$STEAMROOT/$PLATFORM:/usr/lib32:$LD_LIBRARY_PATH"

And now it's working wonderfully, though I still have to restart the computer, heh.

Hope it helps =)

pp eredeti hozzászólása:
As you can see, normally the 32-bit libraries are in /usr/lib32/nvidia-current. NVidia installer probably puts them somewhere else.

You can run "ldconfig" (or "ldconfig -v" to see more info) as root to update the cache.

Thank you pp!
just install libgl1-nvidia-glx:i386

go here to download it: https://packages.debian.org/wheezy/i386/libgl1-nvidia-glx/download
Found the solution to the problem below:

http://steamcommunity.com/app/221410/discussions/0/864959809785178566/#c864960354109996216

pp eredeti hozzászólása:
As an experiment, I made a snapshot of my system, and tried installing the driver on the snapshot in chroot. I noticed, that the installer actually asks, if you want 32-bit compatibility libraries. It also produces a log, in /var/log/nvidia-installer.log. If you don't remember how you answered the question, check the log:

# grep 32-bit /var/log/nvidia-installer.log
-> Install NVIDIA's 32-bit compatibility OpenGL libraries? (Answer: Yes)

Make sure it says: "Yes". Otherwise - reinstall the driver, and choose "Yes" this time.

32-bit libraries are installed in /usr/lib32 on my system, which is version 12.10. I guess it should be the same on 12.04. If you have ANY 32-bit compatibility packages installed, this path should already be in your ld.so configuration. For example, on my system, this is provided by libc6-i386 package:

$ grep -R /usr/lib32 /etc/ld.so.conf.d
/etc/ld.so.conf.d/zz_i386-biarch-compat.conf:/usr/lib32
[...]
$ dpkg -S /etc/ld.so.conf.d/zz_i386-biarch-compat.conf
libc6-i386: /etc/ld.so.conf.d/zz_i386-biarch-compat.conf

Here's what I have, no idea what it means.

bulletbill22@ROBOTRON / $ grep 32-bit /var/log/nvidia-installer.log
-> Install NVIDIA's 32-bit compatibility OpenGL libraries? (Answer: Yes)
-> The NVIDIA 32-bit compatibility OpenGL libraries are to be installed relative to the top-level prefix (chroot) '/emul/ia32-linux'; however, this directory does not exist. Please consult your distribution's documentation to confirm the correct top-level installation prefix for 32-bit compatiblity libraries.
Do you wish to install the 32-bit NVIDIA OpenGL compatibility libraries anyway? (Answer: Yes)

Also, I don't have a /usr/lib32 directory. I'm on mint, btw
Legutóbb szerkesztette: Bulletbill22; 2014. dec. 19., 20:41
I have the similar problem on gentoo with new mesa/xorg/glproto and other stuff. Manually exporing 32-bit path to steam in shell via LD_LIBRARY_PATH works, putting /etc/ld.so.conf.d/*.conf does not work (dunno why), but there's simplier workaround:

Just link 32-bit libGL into your steam/bin directory and voila! Steam starts fine.
ln -s /usr/lib32/opengl/nvidia/lib/libGL.so.1 ~/.steam/bin/
< >
114/14 megjegyzés mutatása
Laponként: 1530 50

Közzétéve: 2013. febr. 9., 4:36
Hozzászólások: 14