User Tools

Site Tools


linux:steam

This is an old revision of the document!


Steam

Steam, digitale Vertriebsplattform für Spiele und Software sowie Multiplayer- und Kommunikationsplattform von Valve, gibt es als nativen Client für Linux, auch in Form von SteamOS als eigenständige Linux-Distribution auf Basis von Debian. Offiziell unterstützt wird von Steam nur Ubuntu, und davon auch nicht gerade die aktuellste Version. Es lässt sich zwar prinzipiell mit nahezu jeder Linux-Distribution installieren, allerdings ist entsprechend mit Fehlern und Problemen zu rechnen.

Steam unter Arch Linux

Im Wiki zu Arch Linux gibt es in der Regel zu Programmen am Ende des Eintrags auch gerade die passende Troubleshooting-Sektion mit üblichen Fehlern und wie sie behoben werden. Zu Steam gibt es – nicht ganz zu Unrecht – eine eigene Seite mit Problemlösungen.

Steam selbst ist nur mit 32 Bit kompatibel, auf einem 64-Bit-System muss entsprechend das multilib-Repository aktiviert sein und es müssen verschiedene zur Funktion benötigte Pakete installiert werden. Welche genau, hängt auch von der verbauten Grafik-Hardware ab. Auf einem Laptop mit Nvidia-Grafik und Optimus zum Abschalten der Grafikkarte als Stromsparfunktion habe ich die folgenden Pakete installieren müssen:

lib32-alsa-plugins lib32-flashplugin lib32-glu lib32-mesa-vdpau lib32-nvidia-utils lib32-primus lib32-sdl2

alsa ist für die Soundausgabe notwendig, flashplugin installiert auch curl mit, welches für Updates benötigt wird. Die folgenden Pakete sind für die Grafik zuständig. Und seit Anfang September 2016 wird, zumindest im Rahmen des Steam Beta Clients, auch sdl2 gebraucht.

Bei mir kam es bei manchen Spielen zu Soundproblemen oder dem vollständigen Abhandensein der Tonausgabe, was in meinem Fall durch die zusätzliche Installation von

lib32-libpulse

gelöst wurde.

Probleme unter Arch Linux

Unter Arch Linux treten oft Probleme mit den Laufzeitbibliotheken von Steam auf, da diese meist älter sind als die von Arch Linux ausgelieferten Pakete. Dadurch kann und kommt es zu Inkompatibilitäten zwischen diesen Bibliotheken und Paketen des Systems selbst. Eine gängige Lösungsstrategie ist es, die betroffenen Bibliotheken ausfindig zu machen und zu löschen, damit als Fallback auf die systemeigenen Bibliotheken zurückgegriffen wird:

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete

Manchmal kann es auch sein, dass libgcrypt Probleme bereitet, oder sich Abhängigkeiten ändern und zusätzliche multilib-Pakete installiert werden müssen, wie oben bereits beschrieben.

Eigener Steam-Starter

Eine hoffentlich dauerhafte Lösung, um Probleme mit Bibliotheken und libGL Fehler beim Start von Steam zu vermeiden, ist das Definieren der “bekannten” Bibliotheken, die Probleme verursachen, innerhalb der LD_PRELOAD Umgebungsvariable, da so vor jedem Start von Steam die angegebenen Bibliotheken bereits geladen und die Steam-eigenen auf diese Weise ignoriert werden. Mit dieser Methode war es mir auch möglich, Steam zum Starten zu bewegen, als die üblichen Löschversuche keine Abhilfe schafften.

Um dies dauerhaft umzusetzen, ohne einen langen Befehl ausführen zu müssen, kann man sich einen eigenen Starter für Steam in Form einer steam.desktop anlegen. Dazu habe ich die von Steam selbst installierte Datei in mein lokales Benutzerverzeichnis kopiert:

cp /usr/share/applications/steam.desktop ~/.local/share/applications/

Das hat den Vorteil, dass das System, sollte es mehrere Starter mit selbem Namen geben, den unter ~/.local/share/applications bevorzugt. Da bei Updates nur die selbst installierten Starter überschrieben werden, in diesem Fall die steam.desktop unter /usr/share/applications, bleibt die Datei unter ~/.local/share/applications unangetastet, weswegen es sich bei dieser Lösung hoffentlich um eine dauerhafte handelt. Also die lokale Kopie mit einem Editor geöffnet und die Zeile Exec=/usr/bin/steam %U ziemlich zu Beginn der Datei durch folgende ersetzt:

Exec=env LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /usr/$LIB/libgpg-error.so' /usr/bin/steam %U

Bei den aufgelisteten Bibliotheken handelst es sich um alle, die aktuell Probleme bereiten oder bereiten können. Die Datei sollte dann in etwa wie folgt aussehen:

~/.local/share/applications/steam.desktop
[Desktop Entry]
Name=Steam
Comment=Application for managing and playing games on Steam
Exec=/usr/bin/steam %U
Icon=steam
Terminal=false
Type=Application
Categories=Network;FileTransfer;Game;
MimeType=x-scheme-handler/steam;

Und eventuell noch die definierten Aktionen wie den Store öffnen, Big Picture-Modus, etc.

Interessant in diesem Zusammenhang ist der zugehörige GitHub-Thread zum gemeldeten Problem, wo ebenfalls auf die Methode mit LD_PRELOAD zurückgegriffen wird.

linux/steam.1473335627.txt.gz · Last modified: by sascha