Problema com a instalação do Steam no Ubuntu 15.04+

103

Na verdade, instalei o novo Ubuntu 15.04 64bit e, quando estou tentando instalar o Steam, há um problema. Na verdade, baixei o pacote deb do site steam, instalei e, quando inicio, nada acontece. Eu tentei iniciá-lo a partir do terminal e o que eu tenho

$ steam
Running Steam on ubuntu 15.04 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(0_client)
libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
sabre hammami
fonte
Você está por acaso usando uma arquitetura amd?
Eu tenho esse erro em um sistema AMD com GPU radeon, mas ainda estou na 14.10 - Eu atualizei o kernel no aptitude, portanto, presumo que o erro decorra a partir daí. No meu log de atualização, obtive linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)enquanto estava usando anteriormente Linux 3.16.0-37-generic.
Pbhj 6/07
A correção da movimentação do libstdc ++. So.6 parece funcionar.
Pbhj 6/07
Você também pode tentar a solução, conforme publicado em askubuntu.com/questions/635851/… que acho mais elegante.
Tahtisilma 16/07/2015

Respostas:

115

Originalmente, este era um problema com o Steam no Ubuntu 15.04 / 15.10. O Steam empacota bibliotecas antigas e está colidindo com drivers de mesa, é também por isso que os drivers fechados não estão vendo esse problema. Atualização: também pode estar faltando algumas coisas. Veja a resposta de outros mchid.

Há um bug aberto no github do Steam .

A solução atual é remover a versão antiga da lib, pelo menos até a válvula resolver o problema no script de inicialização ou algo assim.

Portanto, entre nessas pastas e faça isso (ignore o x86_64se você tiver apenas um sistema de 32 bits):

cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak

Se você tiver problemas com o diretório acima, tente o seguinte:

Algumas pessoas têm .steam/steam/ubuntu12_32, outros apenas .steam/ubuntu12_32. Se você não tiver essas pastas, encontre o local correto verificando onde o seu vapor está procurando o perfil do usuário:

$ fgrep config=  /usr/games/steam
config=$HOME/.steam

Use isso para encontrar sua localização da biblioteca:

[config value] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
   |
   \-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu

Funcionou para mim ... mas observe que, se algum jogo exigir essa lib antiga do tempo de execução do steam, ela poderá travar (é por isso que a válvula deve corrigir isso)

Editar 22/08/2015:

Como o Steam agora tem um link no $HOME/.steam/rootdiretório que sempre aponta para o diretório de instalação correto do Steam, esse comando deve funcionar para todos e é mais simples para uma solução rápida:

find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ -name "libstdc++.so.6" -exec mv "{}" "{}.bak" \; -print

Além disso, lembre-se de que em cada atualização de tempo de execução do vapor, você provavelmente precisará executar isso.

Editar 16-02-2016:

Veja também a resposta do mchid abaixo, simplesmente fazendo:

sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386

pode ser suficiente para corrigir isso.

Editar 23/10/2016:

Para o ubuntu 16.10, o comando foi atualizado para remover mais arquivos que estão quebrando os drivers da mesa, portanto esse novo comando deve funcionar:

find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ \( -name "libstdc++.so.6" -o -name "libgpg-error.so.0"  -o -name "libxcb.so.1" -o -name "libgcc_s.so.1" \) -exec mv "{}" "{}.bak" \; -print

Para drivers de fonte fechada da NVIDIA , consulte a resposta de Vincent abaixo.

Editar 08-01-2017:

Provavelmente edição final, a atualização mais recente do steam linux deve corrigir a maioria, se não todos os problemas! finalmente! : D

Editar 2017-08-03:

Infelizmente, ao voltar de férias, descobri que alguma atualização recente quebrou novamente. Portanto, se você conseguir isso ao iniciar, logo após o download da atualização:

process 23148: arguments to dbus_connection_ref() were incorrect, assertion "connection->generation == _dbus_current_generation" failed in file dbus-connection.c line 2688.

e depois o steam crash, você está atingindo esse bug , relatado como não fatal, mas ele causa crash nas mesmas distros. solução alternativa é esta:

ln -s ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libdbus-1.so.3 ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32/libdbus-1.so.3

boa sorte

higuita
fonte
1
Oi, Não tenho certeza se sou um caso isolado, mas acabei de instalar o pacote .deb na minha nova instalação 15.04 e ele funciona bem. Pena que eu não possa jogar metade dos jogos ... por ser Unix.
thenaglecode
3
Isso ainda está quebrado em dezembro? Uau. A VÁLVULA SUGA.
Warren P
1
Todos esses truques não funcionam em 16.10
QkiZ 16/10
1
Eu desinstalei a versão do Steam e a versão instalada do repositório Ubuntu e agora funciona.
QkiZ 23/10
3
Apenas uma observação, em 16.10, seu comando não fez o truque para mim, no entanto, o encontrado aqui: askubuntu.com/a/775667 funcionou.
rjp
20

Fastfix (testado no Ubuntu 15.04)

mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1{,.disable}
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6{,.disable}
itsnikolay
fonte
3
Hmm isso parecia que estava indo para o trabalho - que certamente esmagado uma mensagem de erro, mas ele ainda está dizendo que não pode carregar swrast - -
rm-vanda
1
Você deve aplicar isso novamente após cada atualização de vapor.
Bebbo
novamente, isso não corrige a mensagem de erro do OP
mchid 21/01
Eu estava tendo o mesmo problema que o OP no Xenial 16.04 com a mesma mensagem de erro, e isso funcionou para mim. Eu precisava executar esses comandos uma vez antes de iniciar o Steam pela primeira vez, depois uma segunda vez após a atualização inicial do Steam.
Maximillian Laumeister
18

O seguinte é do Erro ao instalar o Steam no ubuntu 15.04 e é de longe a resposta mais fácil para esta pergunta (conforme observado acima por tahtisilma ). Gostaria de acrescentar que, se você quiser evitar a necessidade de usar o terminal de comando todas as vezes, poderá editar o arquivo da área de trabalho na área de trabalho, clicando com o botão direito do mouse e selecionando propriedades e substituindo o comando no arquivo da área de trabalho pelo Segue:

sh -c "LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam"  

Versão curta:

Inicie o vapor no terminal usando:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

em vez de apenas vapor

Versão longa:

O Steam não pode abrir o nouveau_dri.so, a biblioteca compartilhada responsável pela comunicação 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:

renderização direta: Sim Executando o vapor no modo de depuração:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Fornece a saída onde 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 do libstdc ++. So.6. Permite verificar qual versão o steam usa:

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

Portanto, o Steam carregou o LibC6 com a ABI versão 18, onde o driver espera a versão 20. A solução é dizer ao sistema operacional para pré-carregar a versão apropriada do LibC6 usando a variável LD_PRELOAD:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

O parâmetro não-intuitivo $ LIB é expandido em ld.so para o caminho certo, com base na plataforma do processo que está sendo iniciado (man 8 ld.so para obter detalhes).

Você pode criar um script com o seguinte conteúdo para executá-lo em vez do 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 poderia verificar se a versão global do LibC6 é mais recente que a versão STEAM_RUNTIME e somente as LD_PRELOAD.

Mais detalhes podem ser encontrados aqui . Note que eu testei no Debian e agora ele foi testado no Ubuntu vívido 15.04 e funciona bem.

molhar o gorila
fonte
embora a edição do arquivo da área de trabalho funcione, não consigo fazer com que o arquivo da área de trabalho da entrada do menu principal (xubuntu) em .local / share / applications / steam.desktop funcione, a menos que eu crie a entrada do menu usando alacarte e remova o vapor da lima da área de trabalho .desktop em .local / share / applications / steam.desktop e, em seguida, vincule ao arquivo da área de trabalho a partir de .local / share / applications, como: ln -s ~ / Desktop / steam.desktop ~ / .local / share / applications / steam .desktop
miller the gorilla
Inicialmente, eu havia movido os arquivos, como sugeriram algumas respostas acima. Mas foi apenas com as exportações que você apontou que eu tenho vapor trabalhando no meu ubuntu 15.04. Muito obrigado! : D
Rubens
Onde a $LIBvariável heck está sendo definida? Muitas pessoas mencionam, e não está definido em nenhum lugar
Sergiy Kolodyazhnyy 15/01
8

Isso funciona bem para mim no Ubuntu 15.04 64bits com driver proprietário NVIDIA versão 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Vincent
fonte
Outra correção já funcionou para mim antes, mas eu tive que reinstalar meus drivers da Nvidia depois de colocar na lista negra meu driver nouveau e depois o steam não seria iniciado, para que isso fosse corrigido desta vez, espero que esse problema seja corrigido até a liberação do Ubuntu 16.04
resonant7hand
Isso deve funcionar em qualquer versão da nvidia (crédito: Alan Plum - github.com/ValveSoftware/steam-for-linux/issues/… ):NVIDIA_VERSION=$(nvidia-settings -q NvidiaDriverVersion | grep -oP "[0-9]{3}" | sed -n 1p); export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-$NVIDIA_VERSION:/usr/lib/nvidia-$NVIDIA_VERSION"
higuita 26/10/16
8

Esta é uma correção simples.

De acordo com a mensagem de erro, estão faltando os seguintes arquivos: r600_dri.soeswrast_dri.so

Execute os seguintes comandos para instalar esses arquivos ausentes:

sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386

O problema agora deve ser resolvido.

Poste quaisquer erros adicionais.

mchid
fonte
1
Se algum funcionário da Valve aparecer, eu tenho uma pergunta; Por que o script de instalação do steam for ubuntu não analisa a instalação do Mesa e encontra as peças ausentes e as instala para mim?
Warren P
Não resolvidas, as bibliotecas em questão já estavam em sua versão mais recente.
mystrdat
Isso consertou para mim. Essa deve ser a primeira coisa que você tenta.
27616 Matthew_360
1

Correção para Ubuntu 16.04, Xenial Xerus, 64 bits

Eu só tive esse problema com o Steam desde a atualização para o 16.04, ele funcionou bem no 14.04. Eu tentei todas as correções acima para versões mais antigas do Ubuntu.

A segunda parte desta solução funcionou para mim.

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install wget gdebi libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386
$ wget http://media.steampowered.com/client/installer/steam.deb
$ sudo gdebi steam.deb

Agora estou executando o L4D2 no Ubuntu novamente - excelente!

James Bradbury
fonte
Se você já possui o dpkg, não há necessidade de instalar o gdebi:sudo dpkg -i ./steam.deb
CSkau 2/16/16
1
O gdebi instalará dependências, o dpkg não.
Havok 22/11
1

Essas duas linhas do comentário de menasheh sobre a questão do github funcionam com o Ubuntu 15.10:

export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0

Observe que, se o Steam se atualizar, pode ser necessário inserir essas linhas novamente.

Chris McFarland
fonte
0

Acabei de encontrar este problema em uma nova instalação do Ubuntu 18.04 LTS. Acontece que a versão em tempo de execução do Steam libgcc_s.so.1foi a culpada. Renomear o arquivo corrigiu o problema para mim:

$ cd ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
$ mv libgcc_s.so.1 libgcc_s.so.1.bak
BrianD
fonte
0

16.04 e posterior

IMG:  O Steam pode ser instalado como um pacote flatpak em todas as versões atualmente suportadas do Ubuntu. Abra o terminal e digite:

sudo add-apt-repository ppa: alexlarsson / flatpak # necessário apenas no 16.04 , não em versões posteriores
atualização do sudo apt 
sudo apt install flatpak
flatpak remote-add --se não existir flathub https://flathub.org/repo/flathub.flatpakrepo
O flatpak instala o flathub com.valvesoftware.Steam

O primeiro comando para adicionar ppa: alexlarsson / flatpak não é necessário no 18.04 e posterior porque o pacote flatpak está nos repositórios padrão.

O Steam pode ser iniciado clicando em seu ícone no Dash ou iniciado no terminal com o seguinte comando:

flatpak run com.valvesoftware.Steam   

Muitos jogos exigem uma compra online, mas alguns jogos populares, como o Team Fortress 2, são gratuitos para jogar. Ao pesquisar na loja, certifique-se de restringir os resultados pelo sistema operacional SteamOS / Linux. Nem todos os jogos Linux são compatíveis com o seu sistema, portanto, verifique os requisitos antes de comprar jogos.

karel
fonte