libEGL.so.1 is not a symbolic link

After the installation of any programs I get the following error

Processing triggers for libc-bin (2.23-0ubuntu7) ...
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link

/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link

What is this error and how can I solve it?

Asked By: Dante

||

did you upgrade without update first? I had the same message, I updated, upgraded and the message was gone

sudo apt-get update
sudo apt-get upgrade
Answered By: Yuval Harpaz

This is an issue which has affected many users and is
reported as a bug at Launchpad.

There appears to be a conflict between different versions of libEGL.

To get rid of these warning, create the following symlinks (but first read the warning bellow):

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

Warning: There is no need to change your system. If after reboot you can not start the graphical interface you can solve by:
1. Login into a terminal;
2. Run sudo dpkg-reconfigure nvidia*

Answered By: Noisy_Botnet

The following is an easy-to-use version of Noisy_Botnet’s solution. It facilitates repeating the process for any update.

#! /bin/sh
#
# find the file in /usr/lib
LIBEGL=`find /usr/lib/nvidia* -name libEGL.so.* | egrep "[0-9][0-9]*.[0-9][0-9]*$"`
LIBEGL_LINK=`echo $LIBEGL | sed 's/[0-9][0-9]*.[0-9][0-9]*$/1/'`
printf "nnThe following commands will be executed:n+++++++++++++++++++++++++++++++++++++++n"
printf "mv $LIBEGL_LINK ${LIBEGL_LINK}.orignln -s $LIBEGL $LIBEGL_LINKnn"
while true; do
    read -p "Do you wish to perform these commands?  " yn
    case $yn in
        [Yy]* ) mv $LIBEGL_LINK ${LIBEGL_LINK}.orig; ln -s $LIBEGL $LIBEGL_LINK ; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done

# find the file in /usr/lib32
LIBEGL=`find /usr/lib32/nvidia* -name libEGL.so.* | egrep "[0-9][0-9]*.[0-9][0-9]*$"`
LIBEGL_LINK=`echo $LIBEGL | sed 's/[0-9][0-9]*.[0-9][0-9]*$/1/'`
printf "nnThe following commands will be executed:n+++++++++++++++++++++++++++++++++++++++n"
printf "mv $LIBEGL_LINK ${LIBEGL_LINK}.orignln -s $LIBEGL $LIBEGL_LINKnn"
while true; do
    read -p "Do you wish to perform these commands?  " yn
    case $yn in
        [Yy]* ) mv $LIBEGL_LINK ${LIBEGL_LINK}.orig; ln -s $LIBEGL $LIBEGL_LINK ; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done
Answered By: Gerard Tromp

I had the same issue and ended up getting through it; it had worked before.
I have Cuda 8.0 and Tensorflow 1.3 on Ubuntu 16.04.

This is how I resolved the issue.
First,

sudo apt-get update

sudo apt-get upgrade

Then,

sudo ldconfig /usr/local/cuda/lib64

It works now. The execution order matters.

Answered By: Hahnsang
Categories: Answers Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.