Как исправить «ошибку при загрузке разделяемых библиотек: libgl.so.1»

Как исправить «ошибку при загрузке разделяемых библиотек: libgl.so.1»

После того как я выполню эту командуdpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

У меня возникла проблема при открытии smplayer, cairo-dock, unity-2d-shell и amdconfig, "ошибка при загрузке общих библиотек: libGL.so.1: невозможно открыть файл общего объекта: нет такого файла или каталога". Возможно, есть и другие приложения, которые сталкиваются с той же проблемой.

Но у меня есть файл.

locate libGL.so.1  
/usr/lib/FGL.renamed.libGL.so.1.2
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/fglrx/fglrx-libGL.so.1.2
/usr/lib/i386-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib/x86_64-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib32/libGL.so.1
/usr/lib32/libGL.so.1.2



ldd $(which unity-2d-shell)|grep libGL  
libGL.so.1 => not found        
ldd $(which mplayer)|grep not  
libGL.so.1 => not found

Но

ldd $(which smplayer)|grep libGL  

ничего не получить.

решение1

@Braiam попал в точку. Вам также следует знать, что нахождение файла с помощью locateне означает, что он существует. locateиспользует базу данных, которая время от времени обновляется. Он не ищет в самой файловой системе, а в своей базе данных. Вы можете запустить updatedbобновление базы данных перед поиском или использовать флаг -e:

-e, --existing
     Print only entries that refer to files existing at the time locate is run.

Например:

$ touch stupid_stupid_file.txt
$ locate stupid_stupid_file.txt   ## No results
$ sudo updatedb                   ## refresh database
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt  ## the file was found after updatedb
$ rm stupid_stupid_file.txt          ## delete the file
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt   ## the file is still in the database 
$ locate -e stupid_stupid_file.txt   ## the file is not found using -e

решение2

Вероятно, это произошло из-за того, что некоторые связанные библиотеки были сломаны, когда вы удалили несколько пакетов одновременно. Вам следовало бы запустить его dpkg -l |grep ^rc|awk '{print $2}'заранее, чтобы знать, что произойдет. К счастью, это можно решить с помощью sudo ldconfig. Это воссоздает кэш связанных библиотек и (надеюсь) исправит ваши библиотеки.

Конечно, это сработает только в том случае, если у вас действительно /usr/lib/libGL.so.1установлена ​​библиотека:

ls -l /usr/lib/x86_64-linux-gnu/libGLU.so.1
lrwxrwxrwx 1 root root 15 sep 18 14:03 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
dpkg -S libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

(у меня 64 бита, поэтому и разница.)

Связанный контент