LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   nvidia-driver SBo The symbolic link '/usr/lib/libGL.so.1' does not point to 'tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1' (https://www.linuxquestions.org/questions/slackware-14/nvidia-driver-sbo-the-symbolic-link-usr-lib-libgl-so-1-does-not-point-to-tmp-sbo-package-nvidia-driver-usr-lib64-libgl-so-1-a-4175610663/)

Gerardo Zamudio 07-26-2017 11:45 AM

nvidia-driver SBo The symbolic link '/usr/lib/libGL.so.1' does not point to 'tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1'
 
Hi

I upgraded my kernel to 4.4.75 and proceeded to upgrade my NVIDIA driver from 375.39 -> 375.66
  • I made sure X was not running
  • I executed nvidia-switch --remove
  • I executed removepkg nvidia-kernel nvidia-driver
  • I built the nvidia-kernel package from SBo and installed it.
I tried building the nvidia-driver package from SBo with GLVND="no" COMPAT32="yes" ./nvidia-driver.SlackBuild and it fails. This is the error message:

Code:

/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
 # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
  ^
  HOST_LINK    tmp/SBo/nvidia-persistenced-375.66/_out/Linux_x86_64/gen-manpage-opts
  M4          nvidia-persistenced.1.m4
gzip -9f < _out/Linux_x86_64/nvidia-persistenced.1 > _out/Linux_x86_64/nvidia-persistenced.1.gz
  CC          _out/Linux_x86_64/g_stamp.c
  LINK        _out/Linux_x86_64/nvidia-persistenced.unstripped
  STRIP        _out/Linux_x86_64/nvidia-persistenced
rm _out/Linux_x86_64/nvidia-persistenced.unstripped
/tmp/SBo/nvidia-settings-375.66/src/libXNVCtrl

WARNING: You specified the '--no-kernel-module' command line option, nvidia-installer will not
        install a kernel module as part of this driver installation, and it will not remove
        existing NVIDIA kernel modules not part of an earlier NVIDIA driver installation.  Please
        ensure that an NVIDIA kernel module matching this driver version is installed seperately.


WARNING: The symbolic link '/usr/lib/libGL.so.1' does not point to
        '/tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1' as is necessary for correct
        operation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64.  It is possible that
        `ldconfig` has created this incorrect symbolic link because libGL.so.1.2.0's "soname"
        conflicts with that of /tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1.  It is
        recommended that you remove or rename the file 'libGL.so.1.2.0' and create the necessary
        symbolic link by running `ln -sf /tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1
        /usr/lib/libGL.so.1`.

mv: cannot stat 'libGLESv1_CM.so.1': No such file or directory

The first time that error appeared I checked and /usr/lib/libGL.so.1 was a symlink to the old NVIDIA 375.39 shared object so I figured it wasn't uninstalled correctly. I ran nvidia-switch --remove again and tried building again and now it still complains about the symlink, although this time it's pointing to libGL.so.1.2.0

I have tried deleting the symlink and making a new one to /tmp/SBo/package-nvidia-driver/usr/lib64/libGL.so.1 as suggested by the error message but when I run the build and it fails, it seems the old symlink to libGL.so.1.2.0 gets put back again.

Anyone know how I can fix this? I reinstalled mesa and xorg-server but I'm stuck using a 1024x768 resolution. I do have backup packages of 375.39 I had built before but when I install them I get an error about missing libGL files.

This is what I have in /usr/lib/


Code:

root@slack:~/nvidia-driver # ls -l /usr/lib/libGL*
-rwxr-xr-x 1 root root  1416 May 10  2016 /usr/lib/libGL.la*
lrwxrwxrwx 1 root root    14 Jul 26 11:18 /usr/lib/libGL.so -> libGL.so.1.2.0*
lrwxrwxrwx 1 root root    14 Jul 26 11:24 /usr/lib/libGL.so.1 -> libGL.so.1.2.0*
-rwxr-xr-x 1 root root 419384 May 10  2016 /usr/lib/libGL.so.1.2.0*
-rwxr-xr-x 1 root root    999 May 10  2016 /usr/lib/libGLESv1_CM.la*
lrwxrwxrwx 1 root root    21 Jul 26 11:18 /usr/lib/libGLESv1_CM.so -> libGLESv1_CM.so.1.1.0*
lrwxrwxrwx 1 root root    21 Jul 26 11:18 /usr/lib/libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0*
-rwxr-xr-x 1 root root  11708 May 10  2016 /usr/lib/libGLESv1_CM.so.1.1.0*
-rwxr-xr-x 1 root root    981 May 10  2016 /usr/lib/libGLESv2.la*
lrwxrwxrwx 1 root root    18 Jul 26 11:18 /usr/lib/libGLESv2.so -> libGLESv2.so.2.0.0*
lrwxrwxrwx 1 root root    18 Jul 26 11:18 /usr/lib/libGLESv2.so.2 -> libGLESv2.so.2.0.0*
-rwxr-xr-x 1 root root  21852 May 10  2016 /usr/lib/libGLESv2.so.2.0.0*
lrwxrwxrwx 1 root root    17 May 19 23:05 /usr/lib/libGLEW.so -> libGLEW.so.1.13.0*
lrwxrwxrwx 1 root root    17 May 19 23:05 /usr/lib/libGLEW.so.1.13 -> libGLEW.so.1.13.0*
-rwxr-xr-x 1 root root 427872 Nov 23  2015 /usr/lib/libGLEW.so.1.13.0*
lrwxrwxrwx 1 root root    19 May 19 23:05 /usr/lib/libGLEWmx.so -> libGLEWmx.so.1.13.0*
lrwxrwxrwx 1 root root    19 May 19 23:05 /usr/lib/libGLEWmx.so.1.13 -> libGLEWmx.so.1.13.0*
-rwxr-xr-x 1 root root 384284 Nov 23  2015 /usr/lib/libGLEWmx.so.1.13.0*
-rwxr-xr-x 1 root root  1215 Feb 21  2013 /usr/lib/libGLU.la*
lrwxrwxrwx 1 root root    15 May 19 23:05 /usr/lib/libGLU.so -> libGLU.so.1.3.1*
lrwxrwxrwx 1 root root    15 May 19 23:05 /usr/lib/libGLU.so.1 -> libGLU.so.1.3.1*
-rwxr-xr-x 1 root root 552632 Feb 21  2013 /usr/lib/libGLU.so.1.3.1*


root@slack:~/nvidia-driver # ls -l /usr/lib64/libGL*
-rwxr-xr-x 1 root root  1462 May  9  2016 /usr/lib64/libGL.la*
lrwxrwxrwx 1 root root    14 Jul 26 11:19 /usr/lib64/libGL.so -> libGL.so.1.2.0*
lrwxrwxrwx 1 root root    14 Jul 26 11:19 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0*
-rwxr-xr-x 1 root root 422392 May  9  2016 /usr/lib64/libGL.so.1.2.0*
-rwxr-xr-x 1 root root  1005 May  9  2016 /usr/lib64/libGLESv1_CM.la*
lrwxrwxrwx 1 root root    21 Jul 26 11:19 /usr/lib64/libGLESv1_CM.so -> libGLESv1_CM.so.1.1.0*
lrwxrwxrwx 1 root root    21 Jul 26 11:19 /usr/lib64/libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0*
-rwxr-xr-x 1 root root  18072 May  9  2016 /usr/lib64/libGLESv1_CM.so.1.1.0*
-rwxr-xr-x 1 root root    987 May  9  2016 /usr/lib64/libGLESv2.la*
lrwxrwxrwx 1 root root    18 Jul 26 11:19 /usr/lib64/libGLESv2.so -> libGLESv2.so.2.0.0*
lrwxrwxrwx 1 root root    18 Jul 26 11:19 /usr/lib64/libGLESv2.so.2 -> libGLESv2.so.2.0.0*
-rwxr-xr-x 1 root root  30360 May  9  2016 /usr/lib64/libGLESv2.so.2.0.0*
lrwxrwxrwx 1 root root    17 May 18 17:29 /usr/lib64/libGLEW.so -> libGLEW.so.1.13.0*
lrwxrwxrwx 1 root root    17 May 18 17:29 /usr/lib64/libGLEW.so.1.13 -> libGLEW.so.1.13.0*
-rwxr-xr-x 1 root root 509520 Nov 23  2015 /usr/lib64/libGLEW.so.1.13.0*
lrwxrwxrwx 1 root root    19 May 18 17:29 /usr/lib64/libGLEWmx.so -> libGLEWmx.so.1.13.0*
lrwxrwxrwx 1 root root    19 May 18 17:29 /usr/lib64/libGLEWmx.so.1.13 -> libGLEWmx.so.1.13.0*
-rwxr-xr-x 1 root root 448488 Nov 23  2015 /usr/lib64/libGLEWmx.so.1.13.0*
-rwxr-xr-x 1 root root  1254 Feb 21  2013 /usr/lib64/libGLU.la*
lrwxrwxrwx 1 root root    15 May 18 17:29 /usr/lib64/libGLU.so -> libGLU.so.1.3.1*
lrwxrwxrwx 1 root root    15 May 18 17:29 /usr/lib64/libGLU.so.1 -> libGLU.so.1.3.1*
-rwxr-xr-x 1 root root 516416 Feb 21  2013 /usr/lib64/libGLU.so.1.3.1*


Gerardo Zamudio 07-26-2017 02:42 PM

I noticed the last part of the error message states

Code:

mv: cannot stat 'libGLESv1_CM.so.1': No such file or directory
The symlink issue was just a WARNING so I've ignored that for now.

I went through the nvidia-driver.SlackBuild. It looks like it's these lines:

Code:

  283  # rename conficting files as needed; remove conflicting symlinks created by installer
  284  cd $PKG/usr/lib$LIBDIRSUFFIX
  285    if [ "$GLVND" = "yes" ]; then
  286        mv libEGL.so.1 libEGL.so.1-nvidia
  287    fi
  288    mv libGL.la libGL.la-nvidia
  289    # mv libGLESv1_CM.so.1 libGLESv1_CM.so.1-nvidia
  290    # mv libGLESv2.so.2 libGLESv2.so.2-nvidia
  291    rm -f libEGL.so
  292    rm -f libGL.so
  293    rm -f libGL.so.1
  294    rm -f libGLESv1_CM.so
  295    rm -f libGLESv2.so
  296    rm -f xorg/modules/libwfb.so
  297    rm -f xorg/modules/extensions/libglx.so
  298  cd -
  299
  300  if [ "$ARCH" = "x86_64" -a "${COMPAT32}" = "yes" ]; then
  301    cd $PKG/usr/lib
  302          if [ "$GLVND" = "yes" ]; then
  303              mv libEGL.so.1 libEGL.so.1-nvidia
  304          fi
  305        mv libGL.la libGL.la-nvidia
  306      # mv libGLESv1_CM.so.1 libGLESv1_CM.so.1-nvidia
  307      # mv libGLESv2.so.2 libGLESv2.so.2-nvidia
  308        rm -f libEGL.so
  309        rm -f libGL.so
  310        rm -f libGL.so.1
  311        rm -f libGLESv1_CM.so
  312        rm -f libGLESv2.so
  313    cd -
  314  fi


Those files (libGLESv1_CM.so.1 / libGLESv2.so.2) are not in the package build directory.

Code:

root@slack:~/nvidia-driver # ls -l /tmp/SBo/package-nvidia-driver/usr/lib/                                                                           
total 141044                                                                                                                                                         
lrwxrwxrwx 1 root root      16 Jul 26 12:59 libEGL.so -> libEGL.so.375.66*                                                                                           
lrwxrwxrwx 1 root root      16 Jul 26 12:59 libEGL.so.1 -> libEGL.so.375.66*                                                                                         
-rwxr-xr-x 1 root root    15940 Jul 26 12:59 libEGL.so.375.66*                                                                                                       
lrwxrwxrwx 1 root root      23 Jul 26 12:59 libEGL_nvidia.so.0 -> libEGL_nvidia.so.375.66*                                                                           
-rwxr-xr-x 1 root root  724168 Jul 26 12:59 libEGL_nvidia.so.375.66*
-rw-r--r-- 1 root root      645 Jul 26 12:59 libGL.la
lrwxrwxrwx 1 root root      10 Jul 26 12:59 libGL.so -> libGL.so.1*
lrwxrwxrwx 1 root root      15 Jul 26 12:59 libGL.so.1 -> libGL.so.375.66*
-rwxr-xr-x 1 root root  1117268 Jul 26 12:59 libGL.so.375.66*
lrwxrwxrwx 1 root root      29 Jul 26 12:59 libGLESv1_CM_nvidia.so.1 -> libGLESv1_CM_nvidia.so.375.66*
-rwxr-xr-x 1 root root    46812 Jul 26 12:59 libGLESv1_CM_nvidia.so.375.66*
lrwxrwxrwx 1 root root      26 Jul 26 12:59 libGLESv2_nvidia.so.2 -> libGLESv2_nvidia.so.375.66*
-rwxr-xr-x 1 root root    79580 Jul 26 12:59 libGLESv2_nvidia.so.375.66*
lrwxrwxrwx 1 root root      23 Jul 26 12:59 libGLX_indirect.so.0 -> libGLX_nvidia.so.375.66*
lrwxrwxrwx 1 root root      23 Jul 26 12:59 libGLX_nvidia.so.0 -> libGLX_nvidia.so.375.66*
-rwxr-xr-x 1 root root  1117268 Jul 26 12:59 libGLX_nvidia.so.375.66*
lrwxrwxrwx 1 root root      14 Jul 26 12:59 libOpenCL.so -> libOpenCL.so.1*
lrwxrwxrwx 1 root root      16 Jul 26 12:59 libOpenCL.so.1 -> libOpenCL.so.1.0*
lrwxrwxrwx 1 root root      18 Jul 26 12:59 libOpenCL.so.1.0 -> libOpenCL.so.1.0.0*
-rwxr-xr-x 1 root root    26440 Jul 26 12:59 libOpenCL.so.1.0.0*
lrwxrwxrwx 1 root root      12 Jul 26 12:59 libcuda.so -> libcuda.so.1*
lrwxrwxrwx 1 root root      17 Jul 26 12:59 libcuda.so.1 -> libcuda.so.375.66*
-rwxr-xr-x 1 root root  7792656 Jul 26 12:59 libcuda.so.375.66*
lrwxrwxrwx 1 root root      15 Jul 26 12:59 libnvcuvid.so -> libnvcuvid.so.1*
lrwxrwxrwx 1 root root      20 Jul 26 12:59 libnvcuvid.so.1 -> libnvcuvid.so.375.66*
-rwxr-xr-x 1 root root  2461288 Jul 26 12:59 libnvcuvid.so.375.66*
-rwxr-xr-x 1 root root 49342832 Jul 26 12:59 libnvidia-compiler.so.375.66*
-rwxr-xr-x 1 root root 29140392 Jul 26 12:59 libnvidia-eglcore.so.375.66*
lrwxrwxrwx 1 root root      21 Jul 26 12:59 libnvidia-encode.so -> libnvidia-encode.so.1*
lrwxrwxrwx 1 root root      26 Jul 26 12:59 libnvidia-encode.so.1 -> libnvidia-encode.so.375.66*
-rwxr-xr-x 1 root root  162228 Jul 26 12:59 libnvidia-encode.so.375.66*
-rwxr-xr-x 1 root root  322088 Jul 26 12:59 libnvidia-fatbinaryloader.so.375.66*
lrwxrwxrwx 1 root root      18 Jul 26 12:59 libnvidia-fbc.so -> libnvidia-fbc.so.1*
lrwxrwxrwx 1 root root      23 Jul 26 12:59 libnvidia-fbc.so.1 -> libnvidia-fbc.so.375.66*
-rwxr-xr-x 1 root root    86048 Jul 26 12:59 libnvidia-fbc.so.375.66*
-rwxr-xr-x 1 root root 32357688 Jul 26 12:59 libnvidia-glcore.so.375.66*
-rwxr-xr-x 1 root root  495820 Jul 26 12:59 libnvidia-glsi.so.375.66*
lrwxrwxrwx 1 root root      18 Jul 26 12:59 libnvidia-ifr.so -> libnvidia-ifr.so.1*
lrwxrwxrwx 1 root root      23 Jul 26 12:59 libnvidia-ifr.so.1 -> libnvidia-ifr.so.375.66*
-rwxr-xr-x 1 root root  191848 Jul 26 12:59 libnvidia-ifr.so.375.66*
lrwxrwxrwx 1 root root      17 Jul 26 12:59 libnvidia-ml.so -> libnvidia-ml.so.1*
lrwxrwxrwx 1 root root      22 Jul 26 12:59 libnvidia-ml.so.1 -> libnvidia-ml.so.375.66*
-rwxr-xr-x 1 root root  1231696 Jul 26 12:59 libnvidia-ml.so.375.66*
lrwxrwxrwx 1 root root      26 Jul 26 12:59 libnvidia-opencl.so.1 -> libnvidia-opencl.so.375.66*
-rwxr-xr-x 1 root root  8166256 Jul 26 12:59 libnvidia-opencl.so.375.66*
-rwxr-xr-x 1 root root  9488360 Jul 26 12:59 libnvidia-ptxjitcompiler.so.375.66*
-rwxr-xr-x 1 root root    13788 Jul 26 12:59 libnvidia-tls.so.375.66*
lrwxrwxrwx 1 root root      31 Jul 26 12:59 libvdpau_nvidia.so -> vdpau/libvdpau_nvidia.so.375.66*
drwxr-xr-x 2 root root    4096 Jul 26 12:59 tls/
drwxr-xr-x 2 root root    4096 Jul 26 12:59 vdpau/


I commented them out and the package built. The package also installed but when I startx my desktop effects are gone and so are all Window borders.

Gerardo Zamudio 07-26-2017 05:52 PM

This may be a problem with the SlackBuild. I edited the lines I previously commented out

Code:

--- nvidia-driver.SlackBuild.orig      2017-07-12 10:53:12.000000000 -0500
+++ nvidia-driver.SlackBuild    2017-07-26 17:03:51.610227876 -0500
@@ -286,8 +286,8 @@
      mv libEGL.so.1 libEGL.so.1-nvidia
    fi
    mv libGL.la libGL.la-nvidia
-  mv libGLESv1_CM.so.1 libGLESv1_CM.so.1-nvidia
-  mv libGLESv2.so.2 libGLESv2.so.2-nvidia
+  mv libGLESv1_CM_nvidia.so.1 libGLESv1_CM.so.1-nvidia
+  mv libGLESv2_nvidia.so.2 libGLESv2.so.2-nvidia
    rm -f libEGL.so
    rm -f libGL.so
    rm -f libGL.so.1
@@ -303,8 +303,8 @@
            mv libEGL.so.1 libEGL.so.1-nvidia
          fi
      mv libGL.la libGL.la-nvidia
-      mv libGLESv1_CM.so.1 libGLESv1_CM.so.1-nvidia
-      mv libGLESv2.so.2 libGLESv2.so.2-nvidia
+      mv libGLESv1_CM_nvidia.so.1 libGLESv1_CM.so.1-nvidia
+      mv libGLESv2_nvidia.so.2 libGLESv2.so.2-nvidia
      rm -f libEGL.so
      rm -f libGL.so
      rm -f libGL.so.1

I installed the package. I tried running nvidia-settings from the command line and it complained about missing libraries, such as libnvidia-gtk2.so and libGLdispatch.so.0. Although libnvidia-gtk2.so did not exist, libnvidia-gtk2.so.1 existed so I'm assuming a symlink was not created during the build. The libGLdispatch.so file was nowhere on my system. I compared the generated libraries with the previous driver, 375.39 and all the libraries get built correctly. I also noticed if I build 375.66 without setting GLVND="no" COMPAT32="yes", the libraries do get built.

Here are the libraries created by 375.39: https://pastebin.com/Gp2F9Mwf

Here are the libraries created by 375.66 (GLVND="no" COMPAT32="yes"): https://pastebin.com/YQbtt2fL

Here are the libraries created by 375.66 (GLVND and COMOPAT32 not set): https://pastebin.com/qWjiZ7yU

I ended up reverting to 375.39. I'm unable to verify if this was only on my system or if the problem really is with the SlackBuild. Anyone else run into this problem?

ReaperX7 07-27-2017 12:44 PM

Try reinstalling the Mesa package after removing any stray leftover symlinks from nvidia-driver. If needed remove the original Mesa package too.

Gerardo Zamudio 07-28-2017 07:18 AM

I mentioned I reinstalled mesa and xorg-server in my original post but I should have been more clear and said I did this after removing all symlinks from nvidia-driver. I'm on a working 375.39 driver now so I may go back and tackle this problem when I have a free weekend.

kingbeowulf 07-30-2017 10:44 PM

The issue is the 'GLVND="no"' switch. nvidia wants by default to use GLVND and those are the libraries you should use unless there is a really old program that can't use GLVND. I'm having a bit of trouble getting the non-GLVND stuff to work correctly with the way nvidia installs the libraries. The issue, and this is what I did with the previous driver, was hand install each and every library since we need a hybrid non-GLVND install that includes GLVND bits, such as libEGL and libGLES. In the next iteration, 'GLVND="no"' will be removed. If I go pure non-GLVND, I will get a lot of complaints about Steam, Vulkan.

I'll take a look at your patches and library lists, but you did it wrong. If you rename libGLESv?-nvidia* to libGLESv?-nvidia*.so-nvidia you will screw up the install. '-nvidia' is a flag so that nvidia-switch knows which nvida files are the same name as the Mesa versions.

Recommendation: use GLVND. It works.

Also, 'nvidia-switch' now has a function to restore Mesa and xorg-server packages (experimental, works here, YMMV). Running 'nvidia-switch --remove" twice is NOT recommended is HIGHLY discouraged.

Either way, after you remove nvidia-driver and delete broken symlinks, you will need 'upgradepkg --reinstall mesa mesa-compat32 xorg-server'


All times are GMT -5. The time now is 06:01 AM.