====== Steam ====== Steam, digitale Vertriebsplattform für Spiele und Software sowie Multiplayer- und Kommunikationsplattform von [[http://www.valvesoftware.com/|Valve]], gibt es als nativen Client für Linux, auch in Form von [[http://store.steampowered.com/steamos|SteamOS]] als eigenständige Linux-Distribution auf Basis von Debian. [[https://support.steampowered.com/kb_article.php?ref=1504-QHXN-8366|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 [[https://wiki.archlinux.org/|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 [[https://wiki.archlinux.org/index.php/Steam|Steam]] gibt es -- nicht ganz zu Unrecht -- eine [[https://wiki.archlinux.org/index.php/Steam/Troubleshooting|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 ''[[https://blog.sash.pw/2016/09/steam-arch-linux-start-problem-sdl2/|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 [[https://blog.sash.pw/2016/04/steam-arch-linux-start-problem-mesa-libgcrypt/|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: [Desktop Entry] Name=Steam Comment=Application for managing and playing games on Steam 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 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 [[https://github.com/ValveSoftware/steam-runtime/issues/13|GitHub-Thread]] zum gemeldeten Problem, wo ebenfalls auf die [[https://github.com/ValveSoftware/steam-runtime/issues/13#issuecomment-219230617|Methode mit LD_PRELOAD]] zurückgegriffen wird. {{tag>linux steam}}