53 votes

Problèmes avec libGl, fbConfigs, swrast à chaque mise à jour ?

J'ai des problèmes lors de la compilation du projet SFML (je ne vois pas de graphique) :

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

Cette erreur peut être résolue en réinstallant simplement les pilotes nvidia à l'aide de ce tutoriel : https://askubuntu.com/a/451248/341889

...mais lorsque je reçois de nouvelles mises à jour - cette erreur revient ;( Que dois-je faire ? Ce n'est pas la solution - ne pas utiliser la mise à jour du système...

P.S. et oui, j'ai sauvegardé tous les changements après l'installation des pilotes nvidia.

33voto

JakeParis Points 4627

En swrast est le logiciel de rendu. Cela signifie qu'il ne trouve pas le pilote matériel de votre carte graphique. Il y a un tas de bibliothèques libGL installées et un tas de liens symboliques vers ces bibliothèques. Pour les voir, lancez ceci à partir du Shell :

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

La cause probable de votre problème est que l'installation de pilotes graphiques rompt parfois ces liens symboliques. (Plus précisément /usr/local/lib/libGL.so.1.2.0 est probablement soit la mauvaise librairie, soit un lien symbolique vers le mauvais lien) (N.B. J'ai écrit ceci il y a un moment. libGL.so.1.2.0 était la version actuelle de gl, il se peut qu'il y ait autre chose maintenant).

Pour savoir quelle bibliothèque les programmes OpenGL essaient d'exécuter, vous pouvez activer un peu de verbosité et exécuter un simple programme OpenGL. Vous pouvez vérifier cela en utilisant le programme de test standard d'OpenGL :

LIBGL_DEBUG=verbose glxgears

Espérons qu'il échouera de la même manière que SFML. Avec LIBGL_DEBUG il devrait vous indiquer la bibliothèque OpenGL qu'il essaie de charger. De plus, la bibliothèque qu'il essaiera de charger sera très certainement /usr/local/lib/libGL.so.1.2.0 (Edit : C'était la bibliothèque OpenGL standard sur ma machine au moment où j'ai répondu à cette question. Il se peut qu'il s'agisse d'une autre version sur votre machine aujourd'hui).

La solution (dans ce cas) consiste donc à s'assurer que /usr/local/lib/libGL.so.1.2.0 est un lien symbolique pointant vers la bonne bibliothèque OpenGL. Dans mon cas, j'ai le pilote Nvidia 3.40 et j'ai donc exécuté :

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

Mais vous devrez la diriger vers la librairie OpenGL qui vous convient (listée dans la première commande find).

En résumé : l'installation de pilotes graphiques (propriétaires) peut rompre les liens symboliques utilisés pour les librairies OpenGL. Pour résoudre ce problème, fixez manuellement les liens symboliques (fix /usr/local/lib/libGL.so.1.2.0 premier).

9voto

vmicho Points 91

J'ai le même problème sur ubuntu 18. Cela ne s'est produit qu'avec des applications 32bit. J'ai donc eu l'idée d'installer quelque chose de nvidia 32bit, car mon dossier /usr/lib/i386-linux-gnu/ était étrangement vide.

Après quelques essais, cela a résolu mon problème avec steam et Wine qui ne démarraient pas :

sudo apt install libnvidia-gl-418:i386

(et remplacez 418 par la version que vous avez)

Il est intéressant de noter que les applications ne se plaignent pas de dépendances manquantes lors de l'installation.

5voto

Adrian Points 73

J'avais des problèmes pour faire pointer le lien symbolique correct vers le pilote nVidia et j'ai trouvé une autre méthode qui fonctionne pour moi.

Elle est décrite aquí .

Et il indique comment installer le pilote nVidia via PPA qui est disponible pour 349.16, la dernière version.

Désinstallez d'abord tous les pilotes nVidia actuellement installés en ouvrant une fenêtre de terminal ( Ctrl + ALT + T ) et en tapant

sudo apt-get remove nvidia*

Redémarrez votre système

Ouvrez ensuite un autre terminal et tapez ce qui suit

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-349 nvidia-settings
sudo add-apt-repository -r ppa:xorg-edgers/ppa

Puis redémarrer à nouveau

J'ai essayé après m'être perdu avec les liens symboliques et steam a bien fonctionné immédiatement après l'installation du pilote et encore une fois il fonctionnait toujours après que j'ai eu 400+ megs de mises à jour du système.

5voto

alexg Points 766

J'ai eu le même problème sur Ubuntu 16.10 avec l'option nvidia-340 et aucune des solutions proposées ici n'a fonctionné pour moi.

Il s'avère que les bibliothèques 32 bits ne se trouvaient pas sur le chemin des bibliothèques.

Cette doublure a fonctionné pour moi :

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4voto

hitesh Points 1

Je n'utilise que cette ligne :

 sudo rm /usr/lib/i386-linux-gnu/libGL.so.1

et cela fonctionne.

Parce que je vois une telle entrée lorsque j'exécute sudo ldconfig -p | grep -i gl.so :

libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X