Perché le mie librerie OpenGL a 32 bit puntano a mesa anziché a nvidia e come posso risolverlo?

Ho installato i driver di Nvidia sul mio sistema Ubuntu 13, ma secondo questo comando ( ldconfig -p | grep GL ):

 $ ldconfig -p | grep GL libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4 libGLU.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so.1 libGLEWmx.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8 libGLEW.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.8 libGLESv2.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2 libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1 

La versione a 32 bit di OpenGL punta alle librerie di mesa anziché a nvidia. Questo fa sì che i miei giochi Steam rifiutino di avviarsi con l’errore:

Imansible trovare il punto di accesso OpenGL ‘glGetError’! La tua scheda video non è supportata o il tuo driver OpenGL deve essere aggiornato.

Perché è così? Quando il programma di installazione di nvidia mi ha chiesto se volevo installare “librerie di compatibilità a 32 bit” (o qualcosa del genere) ho scelto Sì. Come posso risolvere questo?


Modificare:

Ho appena reinstallato lo stesso driver Nvidia e questo sembra aver rimosso completamente il driver OpenGL a 32 bit:

 $ ldconfig -p | grep libGL.so libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so 

Ora Steam non verrà avviato:

Mancano le seguenti librerie a 32 bit e Steam potrebbe non funzionare: libGL.so.1

Ancora una volta, ho scelto quando l’installer mi ha chiesto se volevo installare le librerie a 32 bit. Perché non sono installati !?

Opzione 1: prova a eseguire sudo ldconfig in un terminale. Riavvia e prova.

Opzione 2: se non lo ordina, dovrai aggiungere manualmente la directory delle librerie NVidia (/ usr / lib32) al file di configurazione di ldconfig (/etc/ld.so.conf.d/libc.conf) e quindi rieseguire ldconfig (come root ovviamente)

EDIT: vorrei fare una copia di libc.conf prima di cambiarlo.

Quando ho reinstallato i driver Nvidia, tutti i driver OpenGL di mesa sono stati rimossi dalla cache della libreria. La mia cache della biblioteca assomigliava a questo:

 $ ldconfig -p | grep libGL.so libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so 

Nessun driver a 32 bit lì! Fortunatamente, dopo una rapida ricerca, ho trovato i driver a 32 bit di Nvidia sotto /usr/lib32 . Ho aggiunto il percorso a un file in /etc/ld.so.conf.d/ (qualsiasi file funzionerà, puoi persino creare un nuovo file) ed eseguire sudo ldconfig . La mia cache ora appare così:

 $ ldconfig -p | grep libGL.so libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so.1 (libc6) => /usr/lib32/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so libGL.so (libc6) => /usr/lib32/libGL.so 

E Steam funziona perfettamente!

Codemonkey corretto. Tutto quello che devi fare è aggiungere il driver di nvidia a 32 bit e rimuovere il driver di mesa.

 cd /etc/ld.so.conf.d/ ls 

trova un nome file con “i386”

il mio è “i386-linux-gnu_GL.conf”

poi scrivo,

 sudo gedit i386-linux-gnu_GL.conf 

quindi aggiungi il percorso del driver a 32 bit usando gedit.
il mio è “/ usr / lib32 /”.

Se non riesci a trovare la tua posizione del driver a 32 bit, basta cercarlo.

Salvare. Aprire il terminale e digitare:

 sudo ldconfig 

Il mio Half-Life2 funziona perfettamente dopo questo. : D