Problema con l'installazione di Steam su Ubuntu 15.04+


103

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

$ 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

Usi per caso un'architettura amd?

Ho questo errore su un sistema AMD con GPU Radeon ma sono ancora in 14.10 - Ho aggiornato il kernel in aptitude anche se presumo che l'errore provenga da lì. Dal mio registro di aggiornamento che ho linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)mentre precedentemente stavo usando Linux 3.16.0-37-generic.
pbhj,

Correzione dello spostamento di libstdc ++. So.6 sembra funzionare.
pbhj,

Puoi anche provare la soluzione pubblicata in askubuntu.com/questions/635851/… che penso sia più elegante.
Tahtisilma,

Risposte:


115

Questo era originariamente un problema con Steam su Ubuntu 15.04 / 15.10. Steam raggruppa vecchie librerie e si scontrano con i driver MESA, ecco perché i driver chiusi non vedono questo problema. Aggiornamento: è possibile che manchi qualcosa. Vedi la risposta di altri mchid.

C'è un bug aperto nel github di Steam .

La soluzione attuale è rimuovere la vecchia versione lib, almeno fino a quando Valve non risolve il problema nel loro script di avvio o qualcosa del genere.

Quindi inserisci queste cartelle e fai questo (ignora x86_64se 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 sopra, dovresti provare questo:

Alcune persone hanno .steam/steam/ubuntu12_32, solo altri .steam/ubuntu12_32. Se non disponi di queste cartelle, trova la posizione corretta controllando dove Steam cerca il profilo utente:

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

Usalo per trovare la tua posizione 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 tieni presente che se un gioco richiedeva quella vecchia lib dal runtime di Steam, potrebbe bloccarsi (ecco perché Valve dovrebbe risolvere questo problema)

Modifica 22-08-2015:

Dato che Steam ora ha un link $HOME/.steam/rootche punta sempre alla directory di installazione di Steam corretta, questo comando dovrebbe funzionare per tutti e 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 di runtime di Steam, probabilmente dovrai eseguirlo.

Modifica 16/02/2016:

Vedi anche la risposta mchid di seguito, semplicemente facendo:

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

potrebbe essere sufficiente per risolvere questo problema.

Modifica 23-10-2016:

Per ubuntu 16.10 il comando è stato aggiornato per rimuovere più file che rompono i driver 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 i driver chiusi NVIDIA , vedere la risposta di Vincent di seguito.

Modifica 08/01/2017:

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

Modifica 03-08-2017:

Purtroppo, tornando dalle vacanze è emerso che alcuni recenti aggiornamenti hanno nuovamente interrotto il ritmo. Quindi se ottieni questo 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 colpendo questo bug , segnalato come non fatale, ma fa crash steam nelle stesse distro. 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

in bocca al lupo


1
Ciao, non sono sicuro di essere un caso solitario, ma ho appena installato il pacchetto .deb sulla mia nuova installazione 15.04 e funziona benissimo. Un vero peccato, però, non posso giocare a metà dei giochi ... per il fatto di essere Unix.
thenaglecode

3
Questo è ancora rotto a dicembre? Wow. SUCCHI DI VALVOLA.
Warren P

1
Tutti questi trucchi non funzionano nel 16.10
QkiZ

1
Ho disinstallato la versione da Steam e la versione installata dal repository di Ubuntu e ora funziona.
QkiZ,

3
Solo una nota, il 16.10 il tuo comando non ha funzionato per me, tuttavia, quello trovato qui: askubuntu.com/a/775667 ha funzionato.
rjp,

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}

3
Sembrava che avrebbe funzionato - sicuramente ha schiacciato un messaggio di errore, ma sta ancora dicendo che non può caricare swrast - -
rm-vanda

1
Devi applicarlo di nuovo dopo ogni aggiornamento di Steam.
Bebbo,

di nuovo, questo non risolve il messaggio di errore OP
mchid

Stavo avendo lo stesso problema di OP su Xenial 16.04 con lo stesso messaggio di errore, e questo ha funzionato per me. Ho dovuto eseguire questi comandi una volta prima di avviare Steam per la prima volta, quindi una seconda volta dopo l'aggiornamento iniziale di Steam.
Maximillian Laumeister,

18

Quello che segue è dell'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 desidera 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 a seguire:

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

Versione breve:

Avvia il 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ì Esecuzione di Steam in modalità debug:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Ci dà 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 una versione diversa di libstdc ++. So.6. Consente di verificare 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

Quindi Steam ha caricato LibC6 con ABI versione 18 dove il driver prevede 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 in qualche modo non intuitivo viene espanso in ld.so nel giusto percorso in base alla piattaforma del processo avviato (man 8 ld.so per i dettagli).

È possibile 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 successivamente di LD_PRELOAD.

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


anche se la modifica del file desktop funzionerà, non riesco a far funzionare il file desktop della voce del menu principale (xubuntu) in .local / share / applicazioni / steam.desktop a meno che non crei la voce del menu usando alacarte, quindi rimuovo il file desktop steam .desktop in .local / share / applicazioni / steam.desktop e quindi collegare al file desktop da .local / share / applicazioni in questo modo: ln -s ~ / Desktop / steam.desktop ~ / .local / share / applicazioni / steam .desktop
mugnai il gorilla il

Inizialmente avevo spostato i file, come suggerito da alcune risposte sopra. Ma è stato solo con le esportazioni che hai indicato che ho lavorato a vapore sul mio Ubuntu 15.04. Molte grazie! : D
Rubens,

Dove viene $LIBimpostata la variabile heck ? Molte persone lo menzionano, e non è definito da nessuna parte
Sergiy Kolodyazhnyy,

8

Questo funziona bene per me con Ubuntu 15.04 64 bit con driver proprietario NVIDIA versione 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam

Un'altra correzione aveva funzionato per me prima, ma ho dovuto reinstallare i miei driver Nvidia dopo aver inserito nella lista nera il mio driver nouveau e quindi Steam non si sarebbe avviato, quindi questo problema è stato risolto questa volta, speriamo che questo problema venga risolto quando Ubuntu 16.04 esce
resonant7hand

Questo dovrebbe funzionare su qualsiasi versione di nvidia (credito: 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

Questa è una soluzione semplice.

In base al messaggio di errore, mancano i seguenti file: r600_dri.soeswrast_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 ora dovrebbe essere risolto.

Si prega di inviare eventuali errori aggiuntivi.


1
Se si verifica uno staff di Valve, ho una domanda; Perché Steam per Ubuntu Installer Script non rileva l'installazione di Mesa e non trova parti mancanti e le installa per me?
Warren P,

Non risolti affatto, le librerie in questione erano già alla loro ultima versione.
mystrdat,

Questo mi ha risolto. Questa dovrebbe essere la prima cosa che provi.
matthew_360,

1

Correzione per Ubuntu 16.04, Xenial Xerus, 64 bit

Ho avuto questo problema con Steam solo dopo l'aggiornamento a 16.04, ha funzionato benissimo su 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 eseguo di nuovo L4D2 su Ubuntu - eccellente!


Se hai già dpkg, non è necessario installare gdebi:sudo dpkg -i ./steam.deb
CSkau

1
gdebi installerà dipendenze, dpkg no.
Havok il


0

Ho appena riscontrato questo problema con una nuova installazione di Ubuntu 18.04 LTS. Si scopre che la versione runtime di Steam libgcc_s.so.1era il colpevole. Rinominare il file 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

0

16.04 e successive

IMG:  Steam può essere installato come pacchetto flatpak in tutte le versioni attualmente supportate di Ubuntu. Apri il terminale e digita:

sudo add-apt-repository ppa: alexlarsson / flatpak # richiesto solo nel 16.04 , non nelle versioni successive
sudo apt update 
sudo apt installa flatpak
flatpak remote-add --if-non-esiste flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak installa flathub com.valvesoftware.Steam

Il primo comando per aggiungere ppa: alexlarsson / flatpak non è richiesto in 18.04 e versioni successive perché il pacchetto flatpak si trova nei repository predefiniti.

Steam può essere avviato facendo clic sulla sua icona nel Dash o lanciato dal terminale con il seguente comando:

flatpak run com.valvesoftware.Steam   

Molti giochi richiedono un acquisto online, ma alcuni giochi popolari, come Team Fortress 2, sono gratuiti. Durante la ricerca nel negozio, assicurati di restringere i risultati dal sistema operativo SteamOS / Linux. Non tutti i giochi Linux sono compatibili con il tuo sistema, quindi assicurati di controllare i requisiti prima di acquistare i giochi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.