4

После запуска этой команды 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  

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

2 ответа2

3

Возможно, это связано с тем, что некоторые связанные библиотеки сломались, когда вы удалили несколько пакетов одновременно. Вы должны были запустить 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 бит, поэтому разница.)

2

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .