• Wenn ich Steam unter Arch Linux starte, scheitert dies häufig an einem Fehler im Zusammenhang mit libGL.
  • Hier zeige ich kurz meine Lösung für das Problem.
  • Hinweis: Ich nutze eine Konfiguration der Spiele-Anwendungen, welche ein “virtuelles” Home-Verzeichnis nutzt.
  • Fehler? Ergänzungen? Fragen? Schreib mir.

Ausgangslage

1
2
3
4
5
6
7
8
9
10
11
12
$ steam
Running Steam on arch rolling 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(##########)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

Fehlersuche

Der folgende Code von Github löscht alle 3 beschriebenen Dateien in den Ordnern unter ~/.steam/root/.

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

Dies hat bei mir den Fehler leider nicht behoben. Sollte es aber und hat es mal vor langer Zeit. Also schauen wir uns einmal an welche Bibliotheken fehlen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cd ~/.local/share/Steam/ubuntu12_32
file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq
	libatk-1.0.so.0 => not found
	libcairo.so.2 => not found
	libcups.so.2 => not found
	libdbus-glib-1.so.2 => not found
	libgconf-2.so.4 => not found
	libgdk_pixbuf-2.0.so.0 => not found
	libgtk-x11-2.0.so.0 => not found
	libnm-glib.so.4 => not found
	libnm-util.so.2 => not found
	libnspr4.so => not found
	libnss3.so => not found
	libnssutil3.so => not found
	libopenal.so.1 => not found
	libpango-1.0.so.0 => not found
	libpangocairo-1.0.so.0 => not found
	libsmime3.so => not found
	libudev.so.0 => not found
	libusb-1.0.so.0 => not found
	libXcomposite.so.1 => not found
	libXinerama.so.1 => not found

Das sind ja doch ein paar. Im Arch-Linux-Wiki sind die Abhängigkeiten für Steam aufgelistet:

  • lib32-openal
  • lib32-nss
  • lib32-gtk2
  • lib32-gtk3
  • lib32-libcanberra
  • lib32-gconf (AUR)
  • lib32-dbus-glib (AUR)
  • lib32-libnm-glib (AUR)
  • lib32-libudev0 (AUR)

Diese installieren:

sudo pacman -S lib32-openal lib32-nss lib32-gtk2 lib32-gtk3 lib32-libcanberra
yaourt -Ss lib32-gconf lib32-dbus-glib lib32-libnm-glib lib32-libudev0

Und überprüfen, ob auch alle Abhängigkeiten da sind:

1
2
cd ~/.local/share/Steam/ubuntu12_32
file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq

Kein Output heißt, dass alle Bibliotheken da sind. Starten tut Steam dennoch nicht:

1
2
3
4
5
6
7
8
9
10
11
12
$ steam
Running Steam on arch rolling 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(##########)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

Aber es funktioniert der Steam-Installer, wenn man der Umgebung sagt, wo die Bibliotheken zu finden sind:

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