Steam: Difference between revisions

From Q
Jump to navigation Jump to search
Tgurr (talk | contribs)
 
(22 intermediate revisions by 2 users not shown)
Line 2: Line 2:
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.
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.
{{Command|steam --reset}}
{{Command|steam --reset}}
== Bug [https://github.com/ValveSoftware/steam-for-linux/issues/1040 1040]: Let Steam client windows be managed by the window manager ==
Lets you close Steam to the tray instead of having it sit in the task bar.
{{File|~/.bash_profile|
<pre>
# Steam close to tray workaround
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
export STEAM_FRAME_FORCE_CLOSE=1
</pre>
}}
== Bug [https://github.com/ValveSoftware/steam-for-linux/issues/529 529]: Error: SELinux is preventing steam from using the 'execheap' accesses on a process ==
Enable workaround: {{Root|setsebool -P selinuxuser_execheap 1}}
Disable workaround: {{Root|setsebool -P selinuxuser_execheap 0}}
== Force Steam to use the system libs instead of the STEAM_RUNTIME (STEAM_RUNTIME is the default and only supported upstream configuration) ==
{{Command|<nowiki>STEAM_RUNTIME=0 steam</nowiki>}}


== Start Steam with debug output enabled ==
== Start Steam with debug output enabled ==
{{Command|<nowiki>STEAM_RUNTIME=1 STEAM_DEBUG=1 steam</nowiki>}}
{{Command|<nowiki>STEAM_RUNTIME=1 STEAM_DEBUG=1 steam</nowiki>}}


== Debug a Steam application / game with strace ==
== Debug a Steam application / game with strace ==
Line 40: Line 16:
{{Command|rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse*}}
{{Command|rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse*}}
{{Command|rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse*}}
{{Command|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.
{{Command|cd ~/.steam/steam/SteamApps/common/KillingFloor/System}}
{{Command|rm openal.so}}
{{Command|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|
<pre>
[Engine.Engine]
bdevgoreoverride=True
</pre>
}}


=== Duke Nukem 3D: Megaton Edition ===
=== Duke Nukem 3D: Megaton Edition ===
Line 53: Line 42:


== Steam on Exherbo Linux ==
== Steam on Exherbo Linux ==
As of May 2015 after the big multiarch/cross merge it is not easily possible to install a reduced set of 32bit packages like it was before with multilib, so the following workaround is required if you only want to install the 32bit libraries Steam needs.
=== Host - Prepare system tools ===
 
{{File|/etc/paludis/options.conf|
<pre>
# i686-pc-linux-gnu cross
dev-util/pkgconf 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
</pre>
}}
 
This is required temporarily to get you started and will be reverted later on.
{{File|/etc/paludis/options.conf|
<pre>
sys-devel/gcc -threads
</pre>
}}
 
{{Root|cave resolve pkgconf binutils gcc eclectic-gcc -x1}}


=== Cross environment (basic) ===
=== Target - Prepare cross environment ===


Create a copy of your paludis environment.
Create a copy of your paludis environment.
Line 61: Line 69:


In the cross environment you can remove any repository .conf not needed, required are ::arbor, ::desktop, ::gnome, ::media and ::x11 (::hardware for nvidia-drivers).
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|
<pre>
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
</pre>
}}
{{Root|mkdir -p /var/db/paludis/repositories/cross-installed/i686-pc-linux-gnu}}


{{File|/etc/paludis-cross/bashrc|
{{File|/etc/paludis-cross/bashrc|
Line 79: Line 100:
<pre>
<pre>
*/* targets: i686-pc-linux-gnu
*/* targets: i686-pc-linux-gnu
*/* build_options: jobs=5 -recommended_tests -expensive_tests symbols=strip
*/* build_options: jobs=13 -recommended_tests -expensive_tests symbols=strip
*/* LINGUAS: -* de
*/* LINGUAS: -* de
*/* VIDEO_DRIVERS: -*
*/* VIDEO_DRIVERS: -*
Line 88: Line 109:
*/* -bash-completion
*/* -bash-completion
*/* parts: -configuration -documentation
*/* parts: -configuration -documentation
sys-sound/alsa-plugins pulseaudio
dev-libs/libglvnd X
media-sound/pulseaudio -tcpd -systemd
</pre>
</pre>
}}
}}


{{Root|cave -E paludis:cross resolve --make cross-compile pulseaudio --ignore-from systemd --ignore-from pulseaudio --suggestions ignore --recommendations ignore}}
{{File|//etc/paludis-cross/suggestions.conf|
 
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|
<pre>
<pre>
n  app-arch/bzip2:0::arbor 1.0.6 to ::i686-pc-linux-gnu
*/* -*/*
n  dev-libs/expat:0::arbor 2.1.0 to ::i686-pc-linux-gnu
n  dev-libs/libffi:0::arbor 3.2.1 to ::i686-pc-linux-gnu
n  dev-libs/openssl:0::arbor 1.0.2a to ::i686-pc-linux-gnu
n  sound-themes/sound-theme-freedesktop:0::gnome 0.8 to ::i686-pc-linux-gnu
n  sys-apps/skeleton-filesystem-layout:0::arbor 0.84 to ::i686-pc-linux-gnu
n  sys-devel/gnuconfig:0::arbor 20140728 to ::i686-pc-linux-gnu
n  sys-devel/libtool:0::arbor 2.4.6 to ::i686-pc-linux-gnu
n  dev-libs/json-c:0::arbor 0.11-r2 to ::i686-pc-linux-gnu
n  sys-libs/ncurses:0::arbor 5.9-r3 to ::i686-pc-linux-gnu
n  sys-libs/timezone-data:0::arbor 2015b to ::i686-pc-linux-gnu
n  sys-libs/zlib:0::arbor 1.2.8 to ::i686-pc-linux-gnu
n  sys-sound/alsa-lib:0::arbor 1.0.29 to ::i686-pc-linux-gnu
n  virtual/libssl:0::arbor 0-r1 to ::i686-pc-linux-gnu
n  dev-lang/python:2.7::arbor 2.7.9 to ::i686-pc-linux-gnu
n  app-admin/eclectic-python:2::arbor 2 to ::i686-pc-linux-gnu
n  app-arch/xz:0::arbor 5.2.1 to ::i686-pc-linux-gnu
n  dev-libs/orc:0.4::arbor 0.4.19 to ::i686-pc-linux-gnu
n  dev-util/elfutils:0::arbor 0.161 to ::i686-pc-linux-gnu
n  media-libs/libsndfile:0::media 1.0.25-r2 to ::i686-pc-linux-gnu
n  media-libs/speexdsp:0::media 1.2_rc3 to ::i686-pc-linux-gnu
n  sys-apps/attr:0::arbor 2.4.47 to ::i686-pc-linux-gnu
n  sys-apps/coreutils:0::arbor 8.23-r3 to ::i686-pc-linux-gnu
n  sys-apps/kmod:0::arbor 20 to ::i686-pc-linux-gnu
n  sys-libs/cracklib:0::arbor 2.9.4 to ::i686-pc-linux-gnu
n  sys-libs/gdbm:0::arbor 1.11 to ::i686-pc-linux-gnu
n  sys-libs/libcap-ng:0::arbor 0.7.4 to ::i686-pc-linux-gnu
n  sys-libs/pam:0::arbor 1.1.8-r2 to ::i686-pc-linux-gnu
n  sys-apps/kbd:0::arbor 2.0.2 to ::i686-pc-linux-gnu
n  sys-libs/libcap:0::arbor 2.24-r1 to ::i686-pc-linux-gnu
n  dev-libs/glib:2::arbor 2.44.0 to ::i686-pc-linux-gnu
n  sys-apps/dbus:0::arbor 1.9.14 to ::i686-pc-linux-gnu
n  sys-apps/pciutils:0::arbor 3.3.1 to ::i686-pc-linux-gnu
n  sys-apps/systemd:0::arbor 219-r2 to ::i686-pc-linux-gnu
n  sys-apps/util-linux:0::arbor 2.26.2 to ::i686-pc-linux-gnu
n  dev-libs/glib-networking:0::arbor 2.44.0 to ::i686-pc-linux-gnu
n  gnome-desktop/dconf:0::arbor 0.24.0 to ::i686-pc-linux-gnu
n  gnome-desktop/gobject-introspection:1::gnome 1.44.0 to ::i686-pc-linux-gnu
n  media-sound/pulseaudio:0::desktop 6.0-r3 to ::i686-pc-linux-gnu
n  sys-sound/alsa-plugins:0::arbor 1.0.29 to ::i686-pc-linux-gnu
</pre>
</pre>
}}
}}
{{Root|cave -E paludis:cross resolve --make cross-compile sys-kernel/linux-headers -x1}}
{{Root|cave -E paludis:cross resolve --make cross-compile --no-dependencies-from sys-libs/glibc sys-libs/glibc -x1}}
{{Root|<nowiki>/usr/i686-pc-linux-gnu/bin/localedef --prefix=/ -i de_DE -f UTF-8 de_DE.UTF-8</nowiki>}}
{{Root|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:
{{Root|cave resolve gcc --no-follow-installed-dependencies -x1}}
{{Root|cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1}}
Prevent installing unneeded Python cross dependencies:
{{Root|cave -E paludis:cross resolve --make cross-compile xcb-proto -x1 -0 '*/*'}}


=== Cross environment (NVIDIA) ===
=== Cross environment (NVIDIA) ===


Additionally install the 32bit libraries of nvidia-drivers.
Install the 32bit libraries of nvidia-drivers.


{{File|/etc/paludis-cross/options.conf|
{{File|/etc/paludis-cross/options.conf|
Line 152: Line 145:
}}
}}


{{Root|cave -E paludis:cross resolve --make cross-compile nvidia-drivers --ignore-from systemd --ignore-from pulseaudio --ignore-from xorg-server --suggestions ignore --recommendations ignore}}
{{Root|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.
=== List of installed cross packages ===


{{File|List of installed packages|
{{File|List of installed packages|
<pre>
<pre>
dev-libs/libpthread-stubs:0::x11 0.3-r1 to ::i686-pc-linux-gnu
dev-libs/libbsd
n  media-libs/libpng:1.6::arbor 1.6.17 to ::i686-pc-linux-gnu
dev-libs/libglvnd
n  fonts/font-alias:0::x11 1.0.3 to ::i686-pc-linux-gnu
dev-libs/libmd
n  media-libs/freetype:2::x11 2.5.5 to ::i686-pc-linux-gnu
dev-libs/libpthread-stubs
n  x11-libs/libpciaccess:0::x11 0.13.4 to ::i686-pc-linux-gnu
sys-kernel/linux-headers
n  x11-libs/pixman:1::x11 0.32.6-r1 to ::i686-pc-linux-gnu
sys-libs/glibc
n  x11-libs/libICE:0::x11 1.0.9 to ::i686-pc-linux-gnu
sys-libs/libatomic
n  x11-libs/libXau:0::x11 1.0.8 to ::i686-pc-linux-gnu
sys-libs/libgcc
n  x11-libs/libXdmcp:0::x11 1.1.2 to ::i686-pc-linux-gnu
sys-libs/libstdc++
n  x11-libs/libfontenc:0::x11 1.1.3 to ::i686-pc-linux-gnu
x11-dri/libdrm
n  x11-libs/libxshmfence:0::x11 1.2 to ::i686-pc-linux-gnu
x11-drivers/nvidia-drivers
n  x11-apps/xkeyboard-config:0::x11 2.14-r2 to ::i686-pc-linux-gnu
x11-libs/libvdpau
n  x11-libs/libxcb:0::x11 1.11 to ::i686-pc-linux-gnu
x11-libs/libX11
n  x11-libs/libSM:0::x11 1.2.2-r1 to ::i686-pc-linux-gnu
x11-libs/libXau
x11-dri/libdrm:0::x11 2.4.60 to ::i686-pc-linux-gnu
x11-libs/libxcb
x11-libs/xtrans:0::x11 1.3.5 to ::i686-pc-linux-gnu
x11-libs/libXdmcp
x11-libs/libX11:0::x11 1.6.3-r1 to ::i686-pc-linux-gnu
x11-libs/libXext
x11-libs/libXext:0::x11 1.3.3 to ::i686-pc-linux-gnu
x11-libs/xtrans
x11-libs/libXfixes:0::x11 5.0.1 to ::i686-pc-linux-gnu
x11-proto/xcb-proto
x11-libs/libXdamage:0::x11 1.1.4 to ::i686-pc-linux-gnu
x11-proto/xorgproto
x11-libs/libXi:0::x11 1.7.4 to ::i686-pc-linux-gnu
x11-libs/libXrender:0::x11 0.9.9 to ::i686-pc-linux-gnu
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
x11-libs/libxkbfile:0::x11 1.0.9 to ::i686-pc-linux-gnu
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
</pre>
</pre>
}}
}}
=== 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.
{{Root|ln -s /usr/i686-pc-linux-gnu/lib/ld-linux.so.2 /usr/x86_64-pc-linux-gnu/lib}}
To remove the symlink:
{{Root|rm /usr/x86_64-pc-linux-gnu/lib/ld-linux.so.2}}

Latest revision as of 00:36, 20 September 2022

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/pkgconf 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 pkgconf 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=13 -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/libglvnd X
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

Prevent installing unneeded Python cross dependencies:

# cave -E paludis:cross resolve --make cross-compile xcb-proto -x1 -0 '*/*'

Cross environment (NVIDIA)

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

List of installed cross packages

File: List of installed packages
dev-libs/libbsd
dev-libs/libglvnd
dev-libs/libmd
dev-libs/libpthread-stubs
sys-kernel/linux-headers
sys-libs/glibc
sys-libs/libatomic
sys-libs/libgcc
sys-libs/libstdc++
x11-dri/libdrm
x11-drivers/nvidia-drivers
x11-libs/libvdpau
x11-libs/libX11
x11-libs/libXau
x11-libs/libxcb
x11-libs/libXdmcp
x11-libs/libXext
x11-libs/xtrans
x11-proto/xcb-proto
x11-proto/xorgproto