I've looked at the source code of nvidia-graphics-drivers.
At around line 300 of debian/rules there is this code:
# ld.so.conf
dh_installdirs -p$(PKG_driver) "$(ld_so_conf_dir)"
echo "$(PKG_libdir)" >
"$(CURDIR)/debian/$(PKG_driver)$(ld_so_conf_path)"
ifeq ($(DEB_BUILD_ARCH),amd64)
echo "$(PKG_libdir32)" >>
$(CURDIR)/debian/$(PKG_driver)$(ld_so_conf_path)
endif
# empty ld.so.conf for the fake multi-arch alternative
$(shell touch "$(CURDIR)/debian/$(PKG_driver)$(alt_ld_so_conf_path)")
The "touch" in the last line is probably why the alt_ld.so.conf file exists but
is empty.
But why make it empty?
Changing these lines to:
# ld.so.conf
dh_installdirs -p$(PKG_driver) "$(ld_so_conf_dir)"
echo "$(PKG_libdir)" >
"$(CURDIR)/debian/$(PKG_driver)$(ld_so_conf_path)"
ifeq ($(DEB_BUILD_ARCH),amd64)
# echo "$(PKG_libdir32)" >>
$(CURDIR)/debian/$(PKG_driver)$(ld_so_conf_path)
echo "$(PKG_libdir32)" >
"$(CURDIR)/debian/$(PKG_driver)$(alt_ld_so_conf_path)"
# echo "$(PKG_libdir)" >>
"$(CURDIR)/debian/$(PKG_driver)$(alt_ld_so_conf_path)"
endif
would probably fix this bug. (I've commented 2 of the lines in the "if" block
because I don't know if they are really necessary)
At least, after compiling the package with "debuild", the alt_ld.so.conf file
inside isn't empty.
Also, in line 122 of file debian/nvidia-current.postinst.in:
# Deal with multi-arch ugliness until dpkg supports multi-arch:
Doesn't Debian (and dpkg) support multi-arch now?
This bug should have a high importance, as it prevents 32 bits programs (Skype,
Steam, etc.) from working in 64 bit systems (at least those using the NVIDIA
drivers).
Sure, there are workarounds, but average users aren't expected to find and
apply them.
--
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to nvidia-graphics-drivers in Ubuntu.
https://bugs.launchpad.net/bugs/1181651
Title:
ldconfig problem with 64-bit nvidia driver packages
Status in “nvidia-graphics-drivers” package in Ubuntu:
Confirmed
Bug description:
On Ubuntu 13.04 64-bit, the nvidia-319 package as well as other nvidia
driver pakcages (including nvidia-current and nvidia-current-updates
from the main ubuntu package repositories) don't play nice with
applications that use 32-bit OpenGL libraries. When such an
application tries to load the nvidia 32-bit libGL.so library, they
don't load the nvidia libGL.so but some other non-nvidia libGL.so.
This means a 32-bit application running on Ubuntu Raring 64-bit will
never use the nvidia libGL.so library.
After a lot of monkey business, I figured out what the problem is.
Which libGL.so a 32-bit application uses on a 64-bit system is
controlled by the file /etc/ld.so.conf.d/i386-linux-gnu_GL.conf which
is just a symlink to /etc/alternatives/i386-linux-gnu_gl_conf which is
another symlink to /usr/lib/nvidia-319/alt_ld.so.conf or something
similar for other versions of the nvidia drivers. This file is blank
in a clean install, so ldconfig doesn't know that 32-bit applications
asking for libGL.so should get linked with the version in
/usr/lib32/nvidia-319, so it links them with some other version. This
breaks 32-bit programs like Steam (which throws a warning about not
using direct rendering when it starts up) and 32-bit games like Team
Fortress 2 (which fails to start altogether). Of course, this isn't
specific to Steam and Team Fortress 2 but will affect any 32-bit
program trying to use libGL.so and its associated libraries on a
64-bit machine.
fortunately, the fix for this is pretty simple: in the file
/usr/lib/nvidia-319/alt_ld.so.conf in the nvidia-319 package add the
lines:
/usr/lib32/nvidia-319
/usr/lib/nvidia-319
This will tell ldconfig to use the nvidia libGL.so and associated
libraries for 32-bit applications. For the other versions of the
nvidia driver (such as nvidia-304 and nvidia-304-updates in the main
ubuntu repositories) it's a simple matter of replacing nvidia-319 with
nvidia-304, nvidia-304-updates, nvidia-313, etc. in the directory
names.
Although I reported this bug for the nvidia-319 package, I have
checked and this bug applies at least to the nvidia-304 and
nvidia-304-updates packages for Ubuntu 13.04 amd64 in the main ubuntu
package repositories as well. It probably also applies to other nvidia
driver packages as well, but I haven't checked those. I suppose all
you'd have to look for is a blank /usr/lib/<nvidia driver package
name>/alt_ld.so.conf file to check for the bug.
The file I've included is the output of ldd (which prints the dynamic
library dependencies of a program) when it's used on a 32-bit program
that needs the 32-bit libGL.so on an Ubuntu 13.04 64-bit machine. In
this case, the program I used ldd on is the 32-bit version of glxinfo
from mesa-utils:i386. The nvidia driver version I had installed when I
did this is nvidia-319. However, you will get a very similar result
for other nvidia driver versions/packages.
Also, I said "I don't know" for the package because 1.) it affects
multiple packages and 2.) it didn't accept the package name
nvidia-319.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/1181651/+subscriptions
--
Mailing list: https://launchpad.net/~desktop-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help : https://help.launchpad.net/ListHelp