Problem z instalacją Steam na Ubuntu 15.04+

103

Właściwie zainstalowałem nowe Ubuntu 15.04 64bit, a kiedy próbuję zainstalować na nim Steam, pojawia się problem. W rzeczywistości pobrałem pakiet deb ze strony Steam, zainstalowałem go i kiedy go uruchamiam, nic się nie dzieje. Próbowałem uruchomić go z terminalu i tego, co mam

$ 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
szabla szabla
źródło
Czy przypadkiem używasz architektury amd?
Mam ten błąd w systemie AMD z procesorem graficznym Radeon, ale wciąż mam 14.10 - zaktualizowałem jądro w aptitude, więc przypuszczam, że błąd wynika właśnie z tego. Z mojego dziennika aktualizacji, który otrzymałem linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)podczas wcześniejszego używania Linux 3.16.0-37-generic.
pbhj
Naprawiono problem z przenoszeniem libstdc ++. So.6.
pbhj
Możesz także wypróbować rozwiązanie zamieszczone w askubuntu.com/questions/635851/…, które moim zdaniem jest bardziej eleganckie.
Tahtisilma

Odpowiedzi:

115

Pierwotnie był to problem ze Steam na Ubuntu 15.04 / 15.10. Steam pakuje stare biblioteki i koliduje ze sterownikami mesa, dlatego też zamknięte sterowniki nie widzą tego problemu. Aktualizacja: Być może brakuje Ci niektórych rzeczy. Zobacz odpowiedź innego mchida.

W githubie Steam jest otwarty błąd .

Obecnym obejściem jest usunięcie starej wersji lib, przynajmniej do momentu, aż zawór naprawi problem w skrypcie startowym lub coś w tym stylu.

Więc wejdź do tych folderów i zrób to (zignoruj x86_64jeśli masz tylko system 32-bitowy):

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

Jeśli masz problem z powyższym katalogiem, spróbuj tego:

Niektórzy ludzie mają .steam/steam/ubuntu12_32, inni tylko .steam/ubuntu12_32. Jeśli nie masz tych folderów, znajdź poprawną lokalizację, sprawdzając, gdzie Twoja para szuka profilu użytkownika:

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

Użyj tego, aby znaleźć swoją lokalizację 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

To działało dla mnie ... ale pamiętaj, że jeśli jakaś gra wymagała starej biblioteki lib ze środowiska uruchomieniowego Steam, może się zawiesić (dlatego zawór powinien to naprawić)

Edytuj 22.08.2015:

Ponieważ Steam ma teraz link, $HOME/.steam/rootktóry zawsze wskazuje właściwy katalog instalacyjny Steam, to polecenie powinno działać dla wszystkich i jest prostsze dla szybkiej poprawki:

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

Pamiętaj również, że przy każdej aktualizacji środowiska wykonawczego Steam prawdopodobnie będziesz musiał to uruchomić.

Edytuj 16.02.2016:

Zobacz także odpowiedź mchid poniżej, po prostu robiąc:

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

może wystarczyć, aby to naprawić.

Edytuj 23.10.2016:

W Ubuntu 16.10 polecenie zostało zaktualizowane, aby usunąć więcej plików, które psują sterowniki Mesa, więc to nowe polecenie powinno działać:

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

W przypadku sterowników zamkniętego źródła NVIDIA zobacz odpowiedź Vincenta poniżej.

Edytuj 2017-01-08:

Prawdopodobnie końcowa edycja, najnowsza aktualizacja linuksa Steam powinna naprawić większość, jeśli nie wszystkie problemy! Wreszcie! :RE

Edytuj 2017-08-03:

Niestety po powrocie z wakacji okazało się, że niektóre najnowsze aktualizacje znów wybuchły. Jeśli więc pojawi się to podczas uruchamiania, zaraz po pobraniu aktualizacji:

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

a potem trzask parowy, to jesteś uderzanie ten błąd , zgłaszane jako niezakończony zgonem, ale upaść pary na samych dystrybucji. Obejście jest następujące:

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

powodzenia

higuita
źródło
1
Cześć, Nie jestem pewien, czy jestem samotną skrzynką, ale właśnie zainstalowałem pakiet .deb na mojej świeżej instalacji 15.04 i działa dobrze. Szkoda, że ​​nie mogę grać w pół gier ... z tego powodu, że jestem Unixem.
thenaglecode
3
To wciąż jest zepsute w grudniu? Łał. ZAWORY ZAWOROWE.
Warren P
1
Wszystkie te sztuczki nie działają w 16.10
QkiZ
1
Odinstalowałem wersję ze Steam i zainstalowałem wersję z repozytorium Ubuntu i teraz działa.
QkiZ
3
Tylko uwaga, w dniu 16.10 twoje polecenie nie zadziałało dla mnie, jednak ta znaleziona tutaj: askubuntu.com/a/775667 działała.
rjp
20

Fastfix (testowany na 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
źródło
3
Hmm, to wyglądało na to, że zadziała - z pewnością zmiażdżyło jeden komunikat o błędzie, ale wciąż mówi, że nie można załadować swrast - -
rm-vanda
1
Musisz zastosować to ponownie po każdej aktualizacji Steam.
bebbo
znowu, to nie naprawia komunikatu o błędzie OP
mchid
Miałem ten sam problem co OP na Xenial 16.04 z tym samym komunikatem o błędzie i to zadziałało dla mnie. Musiałem uruchomić te polecenia raz przed uruchomieniem Steam po raz pierwszy, a następnie drugi raz po pierwszej aktualizacji Steam.
Maximillian Laumeister
18

Poniżej znajduje się Błąd podczas instalowania Steam na Ubuntu 15.04 i jest zdecydowanie najłatwiejszą odpowiedzią na to pytanie (jak wspomniano powyżej przez tahtisilma ). Dodałbym, że jeśli chcesz uniknąć bólu związanego z koniecznością korzystania z terminala poleceń za każdym razem, możesz edytować plik pulpitu na pulpicie, klikając prawym przyciskiem myszy i wybierając właściwości, a następnie zastępując polecenie w pliku pulpitu następujący:

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

Krótka wersja:

Uruchom parę w terminalu, używając:

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

zamiast po prostu pary

Długa wersja:

Steam nie może otworzyć nouveau_dri.so, biblioteki współdzielonej odpowiedzialnej za komunikację ze sterownikiem karty graficznej. Aby sprawdzić, czy sterownik obsługuje OpenGL, uruchom:

DISPLAY=:0 glxinfo | grep -i direct

Dane wyjściowe powinny być:

bezpośrednie renderowanie: Tak Działająca para w trybie debugowania:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

Daje nam wynik, w którym następujące wiersze dają nam wskazówkę:

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

Wygląda na to, że Steam używa innej wersji libstdc ++. So.6. Pozwala sprawdzić, której wersji używa 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

Więc Steam załadował LibC6 z ABI w wersji 18, gdzie sterownik oczekuje wersji 20. Rozwiązaniem jest powiadomienie OS, aby wstępnie załadował odpowiednią wersję LibC6 przy użyciu zmiennej LD_PRELOAD:

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

Nieintuicyjny parametr $ LIB zostaje rozszerzony w pliku ld.so na właściwą ścieżkę w oparciu o platformę rozpoczynanego procesu (szczegółowe informacje można znaleźć w podręczniku 8 ld.so).

Możesz utworzyć skrypt z następującą zawartością, aby uruchomić go zamiast 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

Lepszy skrypt może sprawdzić, czy globalna wersja LibC6 jest nowsza niż ta w STEAM_RUNTIME i tylko wtedy LD_PRELOAD.

Więcej informacji można znaleźć tutaj . Zauważ, że przetestowałem go na Debianie, a teraz został przetestowany na Ubuntu vivid 15.04 i działa dobrze.

frezować goryla
źródło
chociaż edycja pliku pulpitu będzie działać, nie mogę uruchomić pliku pulpitu głównego menu (xubuntu) w .local / share / applications / steam.desktop do pracy, chyba że utworzę pozycję menu za pomocą alacarte, a następnie usunę plik steam na pulpicie .desktop w .local / share / applications / steam.desktop, a następnie link do pliku na pulpicie z .local / share / aplikacji, takich jak: ln -s ~ / Desktop / steam.desktop ~ / .local / share / applications / steam .desktop
młynarz goryla
Początkowo przeniosłem pliki, jak sugerowały niektóre powyższe odpowiedzi. Ale dopiero przy eksporcie, który wskazałeś, mam parę do pracy z moim Ubuntu 15.04. Wielkie dzięki! : D
Rubens,
Gdzie $LIBustawiana jest zmienna heck ? Wiele osób o tym wspomina i nie jest to nigdzie zdefiniowane
Sergiy Kolodyazhnyy
8

Działa to dla mnie dobrze pod Ubuntu 15.04 64 bity z zastrzeżonym sterownikiem NVIDIA wersja 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Vincent
źródło
Kolejna poprawka działała już dla mnie wcześniej, ale musiałem ponownie zainstalować sterowniki Nvidii po umieszczeniu na czarnej liście mojego sterownika w wersji nouveau, a następnie Steam nie uruchomił się, więc to naprawiło to tym razem, mam nadzieję, że problem ten zostanie rozwiązany, zanim pojawi się Ubuntu 16.04
resonant7hand
To powinno działać na każdej wersji NVIDIA (kredyt: 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

To prosta poprawka.

Zgodnie z komunikatem o błędzie brakuje następujących plików: r600_dri.soiswrast_dri.so

Uruchom następujące polecenia, aby zainstalować brakujące pliki:

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

Problem powinien zostać teraz rozwiązany.

Proszę zamieścić dodatkowe błędy.

mchid
źródło
1
Jeśli pojawią się jacyś pracownicy Valve, mam pytanie; Dlaczego skrypt instalatora Steam dla Ubuntu nie sprawdza instalacji Mesa, nie znajduje brakujących części i instaluje je dla mnie?
Warren P
W ogóle nierozwiązane, omawiane biblioteki były już w najnowszej wersji.
mystrdat
Naprawiłem to dla mnie. To powinna być pierwsza rzecz, którą spróbujesz.
matthew_360
1

Poprawka dla Ubuntu 16.04, Xenial Xerus, 64-bit

Ten problem ze Steamem miałem tylko od czasu aktualizacji do 16.04, działał dobrze 14.04. Wypróbowałem wszystkie powyższe poprawki dla starszych wersji Ubuntu.

Druga część tego rozwiązania działała dla mnie.

$ 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

Teraz znów uruchamiam L4D2 w Ubuntu - doskonale!

James Bradbury
źródło
Jeśli masz już dpkg, nie musisz instalować gdebi:sudo dpkg -i ./steam.deb
CSkau
1
gdebi zainstaluje zależności, dpkg nie.
Havok
1

Te dwa wiersze komentarza menasheh na temat github działają z Ubuntu 15.10:

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

Pamiętaj, że jeśli Steam sam się aktualizuje, może być konieczne ponowne wprowadzenie tych linii.

Chris McFarland
źródło
0

Właśnie natknąłem się na ten problem podczas nowej instalacji Ubuntu 18.04 LTS. Okazuje się, libgcc_s.so.1że winowajcą była wersja uruchomieniowa Steam . Zmiana nazwy pliku rozwiązała problem:

$ cd ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
$ mv libgcc_s.so.1 libgcc_s.so.1.bak
BrianD
źródło
0

16.04 i później

IMG:  Steam można zainstalować jako pakiet flatpak we wszystkich obecnie obsługiwanych wersjach Ubuntu. Otwórz terminal i wpisz:

sudo add-apt-repository ppa: alexlarsson / flatpak # wymagany tylko w 16.04 , nie w późniejszych wersjach
aktualizacja sudo apt 
sudo apt install flatpak
flatpak remote-add --if-not-exist flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.valvesoftware.Steam

Pierwsze polecenie dodania ppa: alexlarsson / flatpak nie jest wymagane w 18.04 i późniejszych wersjach, ponieważ pakiet flatpak znajduje się w domyślnych repozytoriach.

Steam można uruchomić, klikając jego ikonę w Dash lub uruchomić z terminala za pomocą następującego polecenia:

flatpak run com.valvesoftware.Steam   

Wiele gier wymaga zakupu online, ale niektóre popularne gry, takie jak Team Fortress 2, są darmowe. Podczas wyszukiwania w sklepie pamiętaj o zawężeniu wyników do systemu operacyjnego SteamOS / Linux. Nie wszystkie gry Linux są kompatybilne z twoim systemem, więc upewnij się, że sprawdziłeś wymagania przed zakupem gier.

Karel
źródło