Cómo solucionar el "error al cargar bibliotecas compartidas: libgl.so.1"

Cómo solucionar el "error al cargar bibliotecas compartidas: libgl.so.1"

Después de ejecutar este comandodpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

Tuve el problema al abrir smplayer, cairo-dock, unity-2d-shell y amdconfig, "error al cargar bibliotecas compartidas: libGL.so.1: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio". Quizás haya otras aplicaciones que resuelvan el mismo problema.

pero tengo el archivo

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

Pero

ldd $(which smplayer)|grep libGL  

no tengo nada.

Respuesta1

@Braiam da en el clavo. También debes saber que encontrar un archivo locateno significa que exista. locateutiliza una base de datos que se actualiza de vez en cuando. No busca en el sistema de archivos real sino en la base de datos. Puede ejecutar updatedbpara actualizar la base de datos antes de buscar o usar la -ebandera:

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

Por ejemplo:

$ 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

Respuesta2

Probablemente se deba a que algunas bibliotecas vinculadas se dañaron al desinstalar varios paquetes a la vez. Deberías haber corrido dpkg -l |grep ^rc|awk '{print $2}'de antemano para saber qué pasará. Por suerte, esto se puede solucionar usando sudo ldconfig. Esto recrea el caché de las bibliotecas vinculadas y (con suerte) arreglará sus bibliotecas.

Por supuesto, eso sólo funcionará si realmente tienes la /usr/lib/libGL.so.1biblioteca instalada:

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

(El mío es de 64 bits, por eso la diferencia).

información relacionada