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.

3voto

NWRichmond Points 43

Pour apporter une alternative à la réponse d'Adrian : si vous préférez utiliser des pilotes propriétaires provenant directement de NVIDIA plutôt que ceux trouvés dans un PPA, l'installation (ou dans mon cas, la réinstallation) du dernier pilote propriétaire peut aider à éliminer l'erreur swrast.

Si vous n'avez pas encore le pilote NVIDIA, téléchargez-le à partir de Site web de NVIDIA . Ensuite, passez à tty ( ctrl + alt + F1 ) et désactivez votre gestionnaire de connexion :

Si vous utilisez lightdm, $ sudo service lightdm stop

Si vous utilisez gdm, $ sudo service gdm stop

Naviguez jusqu'à l'installation script et exécutez-la, puis suivez les instructions. Ne vous inquiétez pas si la pré-installation script échoue. J'accepte toujours d'enregistrer le DKMS et les bibliothèques de compatibilité 32 bits. Une fois le pilote installé, redémarrez votre machine :

$ sudo reboot

Si vous disposez déjà d'une installation script d'un ancien pilote NVIDIA, exécutez simplement l'installation du pilote NVIDIA script comme indiqué ci-dessus, mais avec l'option "--update" :

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

Vous obtiendrez ainsi la version la plus récente du pilote.

En procédant ainsi, j'ai corrigé mon libGL error: failed to load driver: swrast erreur.

2voto

A.Shetye Points 111

Je dois admettre que je ne sais pas exactement pourquoi cela fonctionne pour moi, mais c'est le cas. Dans ce cas particulier, "réparer" les entrées de ld.so.conf.d en ajoutant une nouvelle entrée comme celle-ci fonctionne :

sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig 

Cela semble logique, jusqu'à ce que vous exécutiez l'opération suivante find :

$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381

Je ne sais pas pourquoi le fait d'avoir les mêmes entrées en trois exemplaires fonctionne, mais pas en double, je n'en ai aucune idée !

2voto

Cuadue Points 123

Voici un apt -Seule solution qui a fonctionné pour moi, pas de liens symboliques ni de manipulations avec ld.so.conf.d :

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

2voto

Mimi the Cat Points 21

Il suffit d'exécuter ceci :

sudo apt-get install libnvidia-gl-(the version of your driver):i386

La version de votre pilote est indiquée dans nvidia-settings.

1voto

gshilin Points 416

Dans mon cas, la solution à ce problème résidait dans la suite du message d'erreur

Paraview 5.7.0 m'en a informé :

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
(   0.833s) [paraview] vtkOpenGLRenderWindow.c:748 ERR| vtkXOpenGLRenderWindow (0x5588ae6a2160): GLEW could not be initialized: Missing GL version
...
Segmentation fault

Le message

GLEW could not be initialized: Missing GL version

a été déterminante. J'ai lancé 'glxgears' pour vérifier que les bibliothèques graphiques fonctionnaient correctement -- voir aussi man glxgears -- en montrant cette animation :

screenshot of glxgears

Ma solution a donc consisté à définir simplement la variable d'environnement

LD_PRELOAD=/usr/lib/libGL.so

Prenez note :

  1. Bien que je possède une carte graphique Nvidia, je n'ai pas eu besoin de la manipuler ;
  2. Lancement locate libGL.so Je trouve un autre candidat /usr/lib/i386-linux-gnu/libGL.so . L'attribution de la valeur LD_PRELOAD n'a toutefois pas résolu le problème ;
  3. Il n'est pas non plus nécessaire de définir les informations relatives à la bibliothèque GLEW figurant ci-dessus --- voir locate libGLEW.so

Je suis redevable à https://github.com/openai/mujoco-py/issues/44 pour les indices

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