Problema con l'installazione di Steam su Ubuntu 15.04+

102

In realtà ho installato il nuovo Ubuntu 15.04 a 64 bit, e quando sto provando ad installare Steam su di esso, c'è un problema. In effetti ho scaricato il pacchetto deb dal sito di Steam, l'ho installato e quando lo avvio non succede nulla. Ho provato ad avviarlo dal terminale e quello che ho ottenuto

$ 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
    
posta saber hammami 26.04.2015 - 20:14

8 risposte

116

Originariamente era un problema con Steam su Ubuntu 15.04 / 15.10. Steam raggruppa vecchie librerie e si scontrano con i driver di mesa, che è anche il motivo per cui i driver chiusi non vedono questo problema. Aggiornamento: Potrebbe anche essere che ti mancano alcune cose. Vedi l'altra risposta di mchid.

C'è un bug aperto nel github di Steam .

L'attuale soluzione è rimuovere la vecchia versione della lib, almeno finché la valvola non risolve il problema nel loro script di avvio o qualcosa del genere.

Quindi inserisci queste cartelle e fai questo (ignora x86_64 se hai solo un sistema a 32 bit):

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 hai problemi con la directory qui sopra, dovresti provare questo:

Alcune persone hanno il .steam/steam/ubuntu12_32 , altre hanno solo .steam/ubuntu12_32 . Se non si dispone di queste cartelle, trovare la posizione corretta controllando la posizione in cui il vapore sta cercando il profilo utente:

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

Usalo per trovare la tua posizione di 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

Ha funzionato per me ... ma per favore nota che se qualche gioco richiedeva quella vecchia lib dal runtime del vapore, potrebbe bloccarsi (ecco perché la valvola dovrebbe risolvere il problema)

Modifica 2015-08-22:

Poiché Steam ora ha un link in $HOME/.steam/root che punta sempre alla directory di installazione di Steam corretta, questo comando dovrebbe funzionare per tutti ed è più semplice per una soluzione rapida:

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

Inoltre, ricorda che su ogni aggiornamento del runtime del vapore, probabilmente dovrai eseguirlo.

Modifica 16/02/2016:

Vedi anche la risposta mchid , semplicemente facendo:

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

potrebbe essere sufficiente per risolvere questo problema.

Modifica, 2016-10-23:

Per ubuntu 16.10 il comando è stato aggiornato per rimuovere più file che stanno rompendo i driver di mesa, quindi questo nuovo comando dovrebbe funzionare:

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

Per Driver NVIDIA con sorgente chiusa , vedi sotto la risposta di Vincent.

Modifica 2017-01-08:

Probabilmente la modifica finale, l'ultimo aggiornamento di Steam Linux dovrebbe risolvere la maggior parte, se non tutti i problemi! finalmente! : D

Modifica 2017-08-03:

Purtroppo, al ritorno dalle vacanze è emerso che alcuni aggiornamenti recenti si sono riaccesi. Quindi, se lo ottieni all'avvio, subito dopo il download dell'aggiornamento:

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

e poi crash di vapore, quindi stai premendo questo bug , segnalato come non fatale, ma si arresta in modo anomalo sulle stesse distribuzioni. soluzione alternativa è questa:

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

buona fortuna

    
risposta data higuita 26.04.2015 - 21:22
20

Fastfix (testato su 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}
    
risposta data itsnikolay 01.05.2015 - 19:41
17

Quanto segue è Errore nell'installazione di Steam su ubuntu 15.04 ed è di gran lunga la risposta più semplice a questa domanda (come notato sopra da tahtisilma ). Vorrei aggiungere che se si vuole evitare il dolore di dover utilizzare il terminale di comando ogni volta, è possibile modificare il file desktop sul desktop, facendo clic con il pulsante destro del mouse e selezionando le proprietà e quindi sostituendo il comando nel file desktop con il di seguito:

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

Versione breve:

Avvia vapore nel terminale usando:

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

invece di solo vapore

Versione lunga:

Steam non può aprire nouveau_dri.so, la libreria condivisa responsabile della comunicazione con il driver grafico. Per verificare se il driver è abilitato per OpenGL eseguire:

DISPLAY=:0 glxinfo | grep -i direct

L'output dovrebbe essere:

rendering diretto: sì Funzionamento a vapore in modalità debug:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Fornisce l'output in cui le seguenti righe ci danno un suggerimento:

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))

Sembra che steam usi diverse versioni di libstdc ++. so.6. Consente di controllare quale versione di Steam utilizza:

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

Così Steam ha caricato LibC6 con ABI versione 18 dove il driver si aspetta la versione 20. La soluzione è dire al sistema operativo di precaricare la versione corretta di LibC6 usando la variabile LD_PRELOAD:

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

Il parametro $ LIB alquanto non intuitivo viene espanso in ld.so nel percorso corretto in base alla piattaforma del processo avviato (man 8 ld.so per i dettagli).

Puoi creare uno script con il seguente contenuto per eseguirlo invece di 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

Uno script migliore potrebbe verificare se la versione globale di LibC6 è più recente di quella di STEAM_RUNTIME e solo LD_PRELOAD.

Maggiori dettagli possono essere trovati su qui . Nota che l'ho provato su Debian e ora è stato testato su Ubuntu 15.04 vivido e funziona bene.

    
risposta data miller the gorilla 25.07.2015 - 12:36
8

Funziona perfettamente con Ubuntu 15.04 a 64 bit con il driver proprietario NVIDIA versione 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
    
risposta data Vincent 02.05.2015 - 11:14
7

Questa è una soluzione semplice.

In base al messaggio di errore, mancano i seguenti file: r600_dri.so e swrast_dri.so

Esegui i seguenti comandi per installare questi file mancanti:

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

Il problema dovrebbe ora essere risolto.

Per favore pubblica eventuali errori aggiuntivi.

    
risposta data mchid 21.01.2016 - 08:54
1

Correzione per Ubuntu 16.04, Xenial Xerus, 64-bit

Ho avuto questo problema con Steam dall'aggiornamento alla 16.04, ha funzionato bene il 14.04. Ho provato tutte le correzioni sopra per le versioni precedenti di Ubuntu.

La seconda parte di questa soluzione ha funzionato per me .

$ 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

Ora sto eseguendo nuovamente L4D2 su Ubuntu - eccellente!

    
risposta data James Bradbury 21.05.2016 - 09:33
1

Queste due righe del commento di menasheh sul problema di github funzionano con Ubuntu 15.10 :

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

Nota che se Steam si aggiorna da solo, potresti dover inserire nuovamente queste righe.

    
risposta data Chris McFarland 07.03.2016 - 07:49
0

Ci siamo imbattuti in questo problema in una nuova installazione di Ubuntu 18.04 LTS. Risulta la colpevole la versione di Steam di libgcc_s.so.1 . Rinominare il file ha risolto il problema per me:

$ cd ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
$ mv libgcc_s.so.1 libgcc_s.so.1.bak
    
risposta data BrianD 04.05.2018 - 23:40

Leggi altre domande sui tag