Eu tive o mesmo problema depois de instalar novos drivers gráficos da Intel. A causa foi a forma como os links dinâmicos entre bibliotecas compartilhadas foram formados por ld.so
. Eu encontrei peças de diferentes fontes e tomei as seguintes medidas para corrigi-las.
1: verifique /etc/ld.so.conf
ldconfig
é usado para atualizar / manter a configuração dos links. No SO , descobri que a lista de caminhos que ele procura se baseia no arquivo /etc/ld.so.conf
, que deve conter apenas uma linha e deve ficar assim:
$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
2: Verificar arquivos /etc/ld.so.conf.d/
Os arquivos dentro da pasta /etc/ld.so.conf.d/
contêm os diferentes caminhos que contêm as bibliotecas compartilhadas. Para verificar, liste todos os *conf
-files no
pasta. O meu tinha arquivos e links, e parecia assim. Mas pode ser diferente dependendo dos pacotes instalados.
$ ls -Ahl /etc/ld.so.conf.d/
total 16K
-rw-r--r-- 1 root root 38 aug 12 2016 fakeroot-x86_64-linux-gnu.conf
-rw-r--r-- 1 root root 24 sep 27 20:41 ld.so.conf
-rw-r--r-- 1 root root 48 sep 27 20:43 x86_64-linux-gnu.conf
lrwxrwxrwx 1 root root 43 jun 8 11:51 x86_64-linux-gnu_EGL.conf -> /etc/alternatives/x86_64-linux-gnu_egl_conf
lrwxrwxrwx 1 root root 42 jun 8 11:51 x86_64-linux-gnu_GL.conf -> /etc/alternatives/x86_64-linux-gnu_gl_conf
-rw-r--r-- 1 root root 18 sep 27 20:43 zz_i386-biarch-compat.conf
e seu conteúdo, listados um após o outro usando cat
(alguns arquivos têm comentários, não mostrados aqui):
$ cat /etc/ld.so.conf.d/*.conf
/usr/lib/x86_64-linux-gnu/libfakeroot
/usr/lib
/usr/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa-egl
/usr/lib/x86_64-linux-gnu/mesa
/lib32
3: adicionar caminhos ausentes
Faça backup de todos os arquivos antes de alterá-los!
O primeiro problema pode ser que os caminhos estejam faltando nos arquivos .conf
. Por exemplo, eu tive que adicionar /user/local/lib
e usei sudo nano ld.so.conf
para adicioná-lo. E adicionei /usr/lib32
a zz_i386-biarch-compat.conf
. Google ldd
e ldconfig
para encontrar caminhos que estão faltando.
A remoção de linhas desses arquivos geralmente não é necessária.
4: Reordenar arquivos e suas entradas
Agora, o problema é que ld.so
lê os arquivos e suas linhas na ordem em que foram salvos (descobri aqui ). Eu usei uma matriz de nomes de arquivos e uma matriz de novos prefixos para renomear os arquivos. As entradas /mesa...
devem vir antes daquelas em (/usr)/lib/x86_64-linux-gnu/
para ordenar as bibliotecas gráficas.
$ cd /etc/ld.so.conf.d
$ files=(*) #filename array
$ numbers=(1 2 5 3 4 6) #order array
$ for i in ${!files[@]}; do
$ sudo mv -i ${files[$i]} ${numbers[$i]}0_${files[$i]};
$ done
$ cat /etc/ld.so.conf.d/*.conf #Check the order
/usr/lib/x86_64-linux-gnu/libfakeroot
/usr/local/lib
/usr/lib
/usr/lib/x86_64-linux-gnu/mesa-egl
/usr/lib/x86_64-linux-gnu/mesa
/usr/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib32
/lib32
5: Reconfigure a biblioteca e reinicie
$ sudo ldconfig #sudo ldconfig -v (for output)
$ sudo reboot
Após a reinicialização, tudo voltou ao que costumava ser (janelas mais claras, terminal gnome roxo, melhor renderização da fonte). Deixe-me saber se funciona para você.