Problema con la instalación de Steam en Ubuntu 15.04+

103

En realidad, he instalado el nuevo Ubuntu 15.04 de 64 bits, y cuando intento instalar Steam en él, hay un problema. De hecho, descargué el paquete deb del sitio web de steam, lo instalé y cuando lo inicio no sucede nada. Traté de iniciarlo desde la terminal y lo que tengo

$ 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
sable hammami
fuente
¿Estás por casualidad usando una arquitectura AMD?
Tengo este error en un sistema AMD con GPU Radeon, pero todavía estoy en 14.10, aunque actualicé el kernel en aptitude, así que supongo que el error proviene de allí. Desde mi registro de actualizaciones que obtuve linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)mientras estaba usando anteriormente Linux 3.16.0-37-generic.
pbhj
Solución de mover libstdc ++. So.6 parece funcionar.
pbhj
También puede probar la solución publicada en askubuntu.com/questions/635851/... que creo que es más elegante.
Tahtisilma

Respuestas:

115

Originalmente, este era un problema con Steam en Ubuntu 15.04 / 15.10. Steam agrupa las bibliotecas antiguas y están colisionando con los controladores de mesa, es por eso que los controladores cerrados no están viendo este problema. Actualización: También podría ser que te faltan algunas cosas. Ver la respuesta de otros mchid.

Hay un error abierto en el github de Steam .

La solución actual es eliminar la versión antigua de lib, al menos hasta que la válvula solucione el problema en su script de inicio o algo así.

Ingrese estas carpetas y haga esto (ignore x86_64si solo tiene un 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

Si tiene problemas con el directorio anterior, debería intentar esto:

Algunas personas tienen .steam/steam/ubuntu12_32, otras solo .steam/ubuntu12_32. Si no tiene estas carpetas, busque la ubicación correcta comprobando dónde está buscando Steam el perfil de usuario:

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

Use eso para encontrar su ubicación de lib:

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

Funcionó para mí ... pero tenga en cuenta que si algún juego requiere esa antigua lib del tiempo de ejecución de Steam, puede fallar (es por eso que la válvula debería solucionar esto)

Editar 2015-08-22:

Como Steam ahora tiene un enlace en el $HOME/.steam/rootque siempre apunta al directorio de instalación de Steam correcto, este comando debería funcionar para todos y es más simple para una solución rápida:

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

Además, recuerde que en cada actualización de Steam Runtime, probablemente necesite ejecutar esto.

Editar 2016-02-16:

También vea la respuesta mchid a continuación, simplemente haciendo:

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

podría ser suficiente para arreglar esto.

Editar 2016-10-23:

Para ubuntu 16.10, el comando se actualizó para eliminar más archivos que están rompiendo los controladores de mesa, por lo que este nuevo comando debería 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 los controladores de código cerrado de NVIDIA , consulte la respuesta de Vincent a continuación.

Editar 2017-01-08:

Probablemente la edición final, ¡la última actualización de steam linux debería solucionar la mayoría, si no todos los problemas! ¡finalmente! :RE

Editar 2017-08-03:

Lamentablemente, al regresar de vacaciones descubrió que alguna actualización reciente volvió a romper el vapor. Entonces, si obtienes esto al comenzar, justo después de la descarga de la actualización:

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

y luego steam crash, entonces estás golpeando este error , reportado como no fatal, pero se bloquea de vapor en las mismas distribuciones. La solución es 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

buena suerte

higuita
fuente
1
Hola, no estoy seguro de si soy un caso solitario, pero acabo de instalar el paquete .deb en mi nueva instalación de 15.04 y funciona bien. Una lástima que no puedo jugar la mitad de los juegos ... por ser unix.
thenaglecode
3
Esto todavía está roto en diciembre? Guau. La válvula apesta.
Warren P
1
Todos estos trucos no funcionan en 16.10
QkiZ
1
Desinstalé la versión de Steam e instalé la versión del repositorio de Ubuntu y ahora funciona.
QkiZ
3
Solo una nota, en 16.10 su comando no hizo el truco para mí, sin embargo, el que se encuentra aquí: askubuntu.com/a/775667 funcionó.
rjp
20

Fastfix (probado en 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
fuente
3
Hmm esto parecía que iba a trabajar - sin duda aplastó un mensaje de error, pero sigue diciendo que no puede cargar swrast - -
RM-vanda
1
Debe aplicar esto nuevamente después de cada actualización de Steam.
bebbo
nuevamente, esto no soluciona el mensaje de error de OP
mchid
Estaba teniendo el mismo problema que OP en Xenial 16.04 con el mismo mensaje de error, y esto funcionó para mí. Necesitaba ejecutar estos comandos una vez antes de iniciar Steam por primera vez, luego una segunda vez después de la actualización inicial de Steam.
Maximillian Laumeister
18

Lo siguiente es de Error al instalar Steam en ubuntu 15.04 y es, con mucho, la respuesta más fácil a esta pregunta (como se señaló anteriormente por tahtisilma ). Agregaría que si desea evitar la molestia de tener que usar el terminal de comando cada vez, puede editar el archivo de escritorio en su escritorio, haciendo clic derecho y seleccionando propiedades y luego reemplazando el comando en el archivo de escritorio con el siguiendo:

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

Version corta:

Inicie Steam en la terminal usando:

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

en lugar de solo vapor

Versión larga:

Steam no puede abrir nouveau_dri.so, la biblioteca compartida responsable de comunicarse con el controlador de gráficos. Para verificar si el controlador está habilitado para OpenGL, ejecute:

DISPLAY=:0 glxinfo | grep -i direct

La salida debe ser:

renderizado directo: Sí Ejecutando steam en modo de depuración:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Nos da la salida donde las siguientes líneas nos dan una pista:

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 steam usa una versión diferente de libstdc ++. So.6. Vamos a ver qué versión utiliza steam:

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

Entonces Steam cargó LibC6 con ABI versión 18 donde el controlador espera la versión 20. La solución es decirle al sistema operativo que precargue la versión correcta de LibC6 usando la variable LD_PRELOAD:

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

El parámetro $ LIB, algo no intuitivo, se expande en ld.so a la ruta correcta en función de la plataforma del proceso que se está iniciando (man 8 ld.so para más detalles).

Puede crear un script con el siguiente contenido para ejecutarlo en lugar 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

Un script mejor podría verificar si la versión global de LibC6 es más nueva que la de STEAM_RUNTIME y solo entonces LD_PRELOAD's.

Más detalles se pueden encontrar aquí . Tenga en cuenta que lo probé en Debian y ahora se ha probado en Ubuntu vivid 15.04 y funciona bien.

Miller el gorila
fuente
aunque la edición del archivo de escritorio funcionará, no puedo obtener el archivo de escritorio del menú principal (xubuntu) en .local / share / aplicaciones / steam.desktop para que funcione a menos que cree la entrada del menú usando alacarte, y luego elimine el archivo de escritorio steam .desktop en .local / share / aplicaciones / steam.desktop y luego enlace al archivo de escritorio desde .local / share / aplicaciones de la siguiente manera: ln -s ~ / Desktop / steam.desktop ~ / .local / share / aplicaciones / steam .desktop
miller the gorilla
Inicialmente había movido los archivos, como sugerían algunas respuestas anteriores. Pero fue solo con las exportaciones que señaló que tengo vapor trabajando en mi ubuntu 15.04. ¡Muchas gracias! : D
Rubens
¿Dónde se establece la $LIBvariable heck ? Mucha gente lo menciona, y no está definido en ninguna parte
Sergiy Kolodyazhnyy
8

Esto funciona bien para mí en Ubuntu 15.04 64bits con el controlador propietario NVIDIA versión 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Vincent
fuente
Otra solución me había funcionado antes, pero tuve que volver a instalar mis controladores Nvidia después de poner en la lista negra mi controlador nouveau y luego Steam no se iniciaba, así que esta vez lo solucionó, espero que este problema se solucione cuando salga Ubuntu 16.04
resonant7hand
Esto debería funcionar en cualquier versión de 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
8

Esta es una solución simple.

Según el mensaje de error, le faltan los siguientes archivos: r600_dri.soyswrast_dri.so

Ejecute los siguientes comandos para instalar estos archivos faltantes:

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

El problema ahora debería resolverse.

Por favor, publique cualquier error adicional.

mchid
fuente
1
Si algún empleado de Valve se presenta, tengo una pregunta; ¿Por qué la secuencia de comandos de Steam para instalador de Ubuntu no prueba la instalación de Mesa y encuentra las partes faltantes y las instala por mí?
Warren P
No resuelto en absoluto, las bibliotecas en cuestión ya estaban en su última versión.
mystrdat
Esto me lo arregló. Esto debería ser lo primero que intentes.
matthew_360
1

Arreglo para Ubuntu 16.04, Xenial Xerus, 64 bits

Solo he tenido este problema con Steam desde la actualización a 16.04, funcionó bien en 14.04. Intenté todas las correcciones anteriores para versiones anteriores de Ubuntu.

La segunda parte de esta solución funcionó para mí.

$ 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

Ahora estoy ejecutando L4D2 en Ubuntu nuevamente, ¡excelente!

James Bradbury
fuente
Si ya tiene dpkg, no es necesario instalar gdebi:sudo dpkg -i ./steam.deb
CSkau
1
gdebi instalará dependencias, dpkg no.
Havok
0

Acabo de encontrarme con este problema en una nueva instalación de Ubuntu 18.04 LTS. Resulta que la versión en tiempo de ejecución de Steam libgcc_s.so.1fue la culpable. Cambiar el nombre del archivo solucionó el problema para mí:

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

16.04 y posterior

IMG:  Steam se puede instalar como un paquete flatpak en todas las versiones compatibles de Ubuntu. Abra la terminal y escriba:

sudo add-apt-repository ppa: alexlarsson / flatpak # requerido solo en 16.04 , no en versiones posteriores
sudo apt update 
sudo apt install flatpak
flatpak remote-add --si no existe flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.valvesoftware.Steam

El primer comando para agregar ppa: alexlarsson / flatpak no es necesario en 18.04 y posteriores porque el paquete flatpak está en los repositorios predeterminados.

Steam se puede iniciar haciendo clic en su icono en el Tablero o se inicia desde la terminal con el siguiente comando:

flatpak run com.valvesoftware.Steam   

Muchos juegos requieren una compra en línea, pero algunos juegos populares, como Team Fortress 2, son gratuitos. Al buscar en la tienda, asegúrese de limitar los resultados por el sistema operativo SteamOS / Linux. No todos los juegos de Linux son compatibles con su sistema, así que asegúrese de verificar los requisitos antes de comprar juegos.

karel
fuente