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

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


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}

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.


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

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.


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!


Jeśli masz już dpkg, nie musisz instalować gdebi:sudo dpkg -i ./steam.deb
— CSkau

1
gdebi zainstaluje zależności, dpkg nie.
— Havok


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.