Versão resumida:
Inicie o vapor no terminal usando:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
em vez de apenas steam
Versão longa:
O Steam não pode abrir nouveau_dri.so
, a biblioteca compartilhada responsável por se comunicar com o driver gráfico. Para verificar se o driver está habilitado para OpenGL, execute:
DISPLAY=:0 glxinfo | grep -i direct
A saída deve ser:
direct rendering: Yes
Executando vapor no modo de depuração:
DISPLAY=:0 LIBGL_DEBUG=verbose steam
Nos fornece a saída em que as seguintes linhas nos dão uma dica:
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/nouveau_dri.so
libGL: dlopen /usr/lib/i386-linux-gnu/dri/nouveau_dri.so failed (/home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/dri/nouveau_dri.so))
Parece que o steam usa uma versão diferente de libstdc++.so.6
. Vamos verificar qual versão usa o vapor:
ls -l ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
lrwxrwxrwx 1 user user 19 Jul 18 2014 /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.18
Então, o Steam carregou o LibC6 com a versão 18 do ABI, onde o driver espera a versão 20. A solução é dizer ao sistema operacional para pré-carregar a versão correta do LibC6 usando
LD_PRELOAD
variable:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
O parâmetro $ LIB não intuitivo é expandido em ld.so para o caminho certo baseado na plataforma do processo que está sendo iniciado (man 8 ld.so para detalhes).
Você pode criar um script com o seguinte conteúdo para executá-lo, em vez de steam
:
#!/bin/bash
# Export so all child processes are affected as well
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
#export LIBGL_DEBUG=verbose
steam
Um script melhor pode verificar se a versão global do LibC6 é mais recente que a de STEAM_RUNTIME
e somente LD_PRELOAD
.
Mais detalhes podem ser encontrados em aqui . Note que eu testei no Debian e agora ele foi testado no Ubuntu vivid 15.04 e funciona bem.