Steam

From Q
Jump to navigation Jump to search

Refresh Steam files

If there are any problems with your Steam installation first try to reset it's configuration and files. This won't affect your currently installed games.

$ steam --reset

Start Steam with debug output enabled

$ STEAM_RUNTIME=1 STEAM_DEBUG=1 steam

Debug a Steam application / game with strace

Open the Steam options of the specific application and enter the following command into the start parameters form.

$ strace %command% 2>&1 | tee ~/strace.log


Engine and Game specific workarounds (required on e.g. Fedora)

No sound in Unity based games (e.g. in Shroud of the Avatar: Forsaken Virtues)

Most of the time this is solved by removing the PulseAudio libraries Steam ships with its STEAM_RUNTIME to force the game to use the system installed PulseAudio libraries.

$ rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse*
$ rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse*

Killing Floor

Killing Floor ships it own openal library instead of relying on the (working) one which comes with the steam runtime.

$ cd ~/.steam/steam/SteamApps/common/KillingFloor/System
$ rm openal.so
$ ln -s ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1 openal.so

To play the German version with gore (uncut) set the game language to English in Steam and then edit the configuration file by adding an additional line.

File: ~/.killingfloor/System/KillingFloor.ini
[Engine.Engine]
bdevgoreoverride=True

Duke Nukem 3D: Megaton Edition

$ cd ~/.steam/steam/SteamApps/common/Duke\ Nukem\ 3D/bin/
$ ln -s /usr/lib/nvidia/libGL.so.1 libGL.so

Shadow Warrior Classic Redux

$ cd ~/.steam/steam/SteamApps/common/Shadow\ Warrior\ Classic/bin/
$ ln -s /usr/lib/nvidia/libGL.so.1 libGL.so

Dungeon Defenders Eternity

Right click the Dungeon Defenders Eternity in the Steam library, choose "Link Steam Libraries" in the context menu.

Steam on Exherbo Linux

Host - Prepare system tools

File: /etc/paludis/options.conf
# i686-pc-linux-gnu cross
dev-util/pkg-config targets: i686-pc-linux-gnu
sys-devel/binutils targets: i686-pc-linux-gnu
sys-devel/gcc targets: i686-pc-linux-gnu
app-admin/eclectic-gcc targets: i686-pc-linux-gnu

This is required temporarily to get you started and will be reverted later on.

File: /etc/paludis/options.conf
sys-devel/gcc -threads
# cave resolve pkg-config binutils gcc eclectic-gcc -x1

Target - Prepare cross environment

Create a copy of your paludis environment.

# cp -a /etc/paludis /etc/paludis-cross

In the cross environment you can remove any repository .conf not needed, required are ::arbor, ::desktop, ::gnome, ::media and ::x11 (::hardware for nvidia-drivers).

File: /etc/paludis-cross/repositories/i686-pc-linux-gnu.conf
format = exndbam
location = ${root}/var/db/paludis/repositories/cross-installed/i686-pc-linux-gnu
name = i686-pc-linux-gnu
split_debug_location = /usr/i686-pc-linux-gnu/lib/debug
tool_prefix = i686-pc-linux-gnu-
cross_compile_host = i686-pc-linux-gnu
# mkdir -p /var/db/paludis/repositories/cross-installed/i686-pc-linux-gnu
File: /etc/paludis-cross/bashrc
CHOST="x86_64-pc-linux-gnu"
x86_64_pc_linux_gnu_CFLAGS="-pipe -O2 -march=native"
i686_pc_linux_gnu_CFLAGS="-pipe -O2 -march=native"
File: /etc/paludis-cross/platforms.conf
*/* x86 ~x86
File: /etc/paludis-cross/options.conf
*/* targets: i686-pc-linux-gnu
*/* build_options: jobs=5 -recommended_tests -expensive_tests symbols=strip
*/* LINGUAS: -* de
*/* VIDEO_DRIVERS: -*
*/* INPUT_DRIVERS: -*
*/* X86_CPU_FEATURES: -* avx mmx sse sse2 sse3 ssse3 sse4.1 sse4.2

# Steam minimal dependencies setup
*/* -bash-completion
*/* parts: -configuration -documentation
dev-libs/glib-networking PROVIDERS: -gnutls openssl
sys-sound/alsa-plugins pulseaudio
media-sound/pulseaudio -tcpd systemd
x11-drivers/nvidia-drivers -tools
dev-libs/glib-networking -ssl
dev-libs/libepoxy X
sys-apps/systemd PYTHON_ABIS: 3.7 PROVIDERS: -openssl
sys-devel/meson PYTHON_ABIS: 3.7
File: //etc/paludis-cross/suggestions.conf
*/* -*/*
# cave -E paludis:cross resolve --make cross-compile sys-kernel/linux-headers -x1
# cave -E paludis:cross resolve --make cross-compile --no-dependencies-from sys-libs/glibc sys-libs/glibc -x1
# /usr/i686-pc-linux-gnu/bin/localedef --prefix=/ -i de_DE -f UTF-8 de_DE.UTF-8
# cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1

Remove the previously set sys-devel/gcc -threads from /etc/paludis/options.conf and rebuild gcc:

# cave resolve gcc --no-follow-installed-dependencies -x1
# cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1

Install steam dependencies:

# cave -E paludis:cross resolve --make cross-compile pulseaudio

This will install ~40 packages which is enough for Steam to run if you use a NVIDIA card. If not you might have to install mesa and an additional driver to provide a 32bit libGL.so.

File: List of installed packages
n   app-arch/bzip2:0::arbor 1.0.8 to ::i686-pc-linux-gnu
n   app-arch/xz:0::arbor 5.2.4 to ::i686-pc-linux-gnu
n   dev-libs/expat:0::arbor 2.2.9 to ::i686-pc-linux-gnu
n   dev-libs/libffi:0::arbor 3.2.1-r1 to ::i686-pc-linux-gnu
n   dev-libs/openssl:0::arbor 1.1.1d to ::i686-pc-linux-gnu
n   dev-libs/orc:0.4::arbor 0.4.29 to ::i686-pc-linux-gnu
n   media-libs/libsndfile:0::media 1.0.28-r1 to ::i686-pc-linux-gnu
n   media-libs/soxr:0::media 0.1.3 to ::i686-pc-linux-gnu
n   media-libs/speexdsp:0::media 1.2_rc3-r1 to ::i686-pc-linux-gnu
n   sound-themes/sound-theme-freedesktop:0::gnome 0.8 to ::i686-pc-linux-gnu
n   sys-apps/attr:0::arbor 2.4.48 to ::i686-pc-linux-gnu
n   sys-apps/pciutils-data:0::arbor scm to ::i686-pc-linux-gnu
n   sys-apps/sed:0::arbor 4.7 to ::i686-pc-linux-gnu
n   sys-apps/skeleton-filesystem-layout:0::arbor 0.86-r3 to ::i686-pc-linux-gnu
n   sys-devel/gnuconfig:0::arbor 20180101 to ::i686-pc-linux-gnu
n   sys-devel/libtool:0::arbor 2.4.6-r1 to ::i686-pc-linux-gnu
n   sys-libs/libcap-ng:0::arbor 0.7.9 to ::i686-pc-linux-gnu
n   sys-libs/ncurses:0::arbor 6.1-r3 to ::i686-pc-linux-gnu
n   app-shells/bash:0::arbor 5.0_p11 to ::i686-pc-linux-gnu
n   app-shells/bash-completion:0::arbor 2.9 to ::i686-pc-linux-gnu
n   sys-libs/readline:8::arbor 8.0_p1 to ::i686-pc-linux-gnu
n   sys-libs/gdbm:0::arbor 1.18.1 to ::i686-pc-linux-gnu
n   sys-libs/zlib:0::arbor 1.2.11-r1 to ::i686-pc-linux-gnu
n   dev-lang/python:3.7::arbor 3.7.4 to ::i686-pc-linux-gnu
n   app-admin/eclectic-python:3::arbor 3-r1 to ::i686-pc-linux-gnu
n   dev-libs/pcre:0::arbor 8.43 to ::i686-pc-linux-gnu
n   dev-util/elfutils:0::arbor 0.177 to ::i686-pc-linux-gnu
n   sys-apps/kmod:0::arbor 26 to ::i686-pc-linux-gnu
n   sys-libs/cracklib:0::arbor 2.9.7 to ::i686-pc-linux-gnu
n   sys-apps/coreutils:0::arbor 8.31 to ::i686-pc-linux-gnu
n   sys-apps/dbus:0::arbor 1.12.16 to ::i686-pc-linux-gnu
n   sys-apps/kbd:0::arbor 2.2.0 to ::i686-pc-linux-gnu
n   sys-apps/pciutils:0::arbor 3.6.2 to ::i686-pc-linux-gnu
n   sys-apps/systemd:0::arbor 243 to ::i686-pc-linux-gnu
n   sys-apps/util-linux:0::arbor 2.34 to ::i686-pc-linux-gnu
n   sys-libs/libcap:0::arbor 2.27 to ::i686-pc-linux-gnu
n   sys-libs/pam:0::arbor 1.3.1-r2 to ::i686-pc-linux-gnu
n   dev-libs/glib:2::arbor 2.62.0 to ::i686-pc-linux-gnu
n   dev-libs/glib-networking:0::arbor 2.62.0 to ::i686-pc-linux-gnu
n   sys-sound/alsa-lib:0::arbor 1.1.9 to ::i686-pc-linux-gnu
n   media-sound/pulseaudio:0::desktop 13.0 to ::i686-pc-linux-gnu
n   sys-sound/alsa-plugins:0::arbor 1.1.9 to ::i686-pc-linux-gnu
n   virtual/sed:0::arbor 0 to ::i686-pc-linux-gnu
n   app-admin/eclectic:0::arbor 2.0.21 to ::i686-pc-linux-gnu

Cross environment (NVIDIA)

Additionally install the 32bit libraries of nvidia-drivers.

File: /etc/paludis-cross/options.conf
x11-drivers/nvidia-drivers -tools
# cave -E paludis:cross resolve --make cross-compile nvidia-drivers --ignore-from xorg-server

This will install ~45 packages as dependencies of nvidia-drivers. Steam itself however only requires a 32bit libGL.so an non of the mesa/dri/Xorg stuff.

File: List of installed packages
n   dev-libs/libpthread-stubs:0::x11 0.3-r1 to ::i686-pc-linux-gnu
n   media-libs/libpng:1.6::arbor 1.6.17 to ::i686-pc-linux-gnu
n   fonts/font-alias:0::x11 1.0.3 to ::i686-pc-linux-gnu
n   media-libs/freetype:2::x11 2.5.5 to ::i686-pc-linux-gnu
n   x11-libs/libpciaccess:0::x11 0.13.4 to ::i686-pc-linux-gnu
n   x11-libs/pixman:1::x11 0.32.6-r1 to ::i686-pc-linux-gnu
n   x11-libs/libICE:0::x11 1.0.9 to ::i686-pc-linux-gnu
n   x11-libs/libXau:0::x11 1.0.8 to ::i686-pc-linux-gnu
n   x11-libs/libXdmcp:0::x11 1.1.2 to ::i686-pc-linux-gnu
n   x11-libs/libfontenc:0::x11 1.1.3 to ::i686-pc-linux-gnu
n   x11-libs/libxshmfence:0::x11 1.2 to ::i686-pc-linux-gnu
n   x11-apps/xkeyboard-config:0::x11 2.14-r2 to ::i686-pc-linux-gnu
n   x11-libs/libxcb:0::x11 1.11 to ::i686-pc-linux-gnu
n   x11-libs/libSM:0::x11 1.2.2-r1 to ::i686-pc-linux-gnu
n   x11-dri/libdrm:0::x11 2.4.60 to ::i686-pc-linux-gnu
n   x11-libs/xtrans:0::x11 1.3.5 to ::i686-pc-linux-gnu
n   x11-libs/libX11:0::x11 1.6.3-r1 to ::i686-pc-linux-gnu
n   x11-libs/libXext:0::x11 1.3.3 to ::i686-pc-linux-gnu
n   x11-libs/libXfixes:0::x11 5.0.1 to ::i686-pc-linux-gnu
n   x11-libs/libXdamage:0::x11 1.1.4 to ::i686-pc-linux-gnu
n   x11-libs/libXi:0::x11 1.7.4 to ::i686-pc-linux-gnu
n   x11-libs/libXrender:0::x11 0.9.9 to ::i686-pc-linux-gnu
n   x11-libs/libXres:0::x11 1.0.7 to ::i686-pc-linux-gnu
n   x11-libs/libXt:0::x11 1.1.5 to ::i686-pc-linux-gnu
n   x11-libs/libXmu:0::x11 1.1.2-r1 to ::i686-pc-linux-gnu
n   x11-libs/libXpm:0::x11 3.5.11 to ::i686-pc-linux-gnu
n   x11-libs/libXxf86misc:0::x11 1.0.3 to ::i686-pc-linux-gnu
n   x11-libs/libXxf86vm:0::x11 1.1.4-r1 to ::i686-pc-linux-gnu
n   dev-libs/libepoxy:0::x11 1.2-r1 to ::i686-pc-linux-gnu
n   media-libs/fontconfig:0::x11 2.11.1 to ::i686-pc-linux-gnu
n   fonts/dejavu:0::x11 2.34 to ::i686-pc-linux-gnu
n   x11-dri/mesa:0::x11 10.5.5 to ::i686-pc-linux-gnu
n   fonts/font-adobe-100dpi:0::x11 1.0.3 to ::i686-pc-linux-gnu
n   fonts/font-adobe-75dpi:0::x11 1.0.3 to ::i686-pc-linux-gnu
n   fonts/font-cursor-misc:0::x11 1.0.3 to ::i686-pc-linux-gnu
n   fonts/font-misc-misc:0::x11 1.1.2 to ::i686-pc-linux-gnu
n   x11-libs/libXfont:0::x11 1.5.1 to ::i686-pc-linux-gnu
n   x11-libs/libvdpau:0::x11 1.1 to ::i686-pc-linux-gnu
n   x11-libs/libxkbfile:0::x11 1.0.9 to ::i686-pc-linux-gnu
n   x11-apps/xkbcomp:0::x11 1.3.0 to ::i686-pc-linux-gnu
n   x11-libs/libxkbui:0::x11 1.0.2-r1 to ::i686-pc-linux-gnu
n   x11-server/xorg-server:0::x11 1.17.1 to ::i686-pc-linux-gnu
n   x11-drivers/nvidia-drivers:0::hardware 349.16-r2 to ::i686-pc-linux-gnu

Finalize

For Steam to run you'll need to create a symlink, there's ongoing work on a tool called multiload which will eventually solve that problem in the future and this workaround won't be neccessary anymore.

# ln -s /usr/i686-pc-linux-gnu/lib/ld-linux.so.2 /usr/x86_64-pc-linux-gnu/lib

To remove the symlink:

# rm /usr/x86_64-pc-linux-gnu/lib/ld-linux.so.2