Steam: Difference between revisions

From Q
Jump to navigation Jump to search
Tgurr (talk | contribs)
No edit summary
 
(9 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 71: Line 47:
<pre>
<pre>
# i686-pc-linux-gnu cross
# i686-pc-linux-gnu cross
dev-util/pkg-config targets: i686-pc-linux-gnu
dev-util/pkgconf targets: i686-pc-linux-gnu
sys-devel/binutils targets: i686-pc-linux-gnu
sys-devel/binutils targets: i686-pc-linux-gnu
sys-devel/gcc targets: i686-pc-linux-gnu
sys-devel/gcc targets: i686-pc-linux-gnu
Line 85: Line 61:
}}
}}


{{Root|cave resolve pkg-config binutils gcc eclectic-gcc -x1}}
{{Root|cave resolve pkgconf binutils gcc eclectic-gcc -x1}}


=== Target - Prepare cross environment ===
=== Target - Prepare cross environment ===
Line 124: 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 133: Line 109:
*/* -bash-completion
*/* -bash-completion
*/* parts: -configuration -documentation
*/* parts: -configuration -documentation
dev-libs/glib-networking PROVIDERS: -gnutls openssl
dev-libs/libglvnd X
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
</pre>
</pre>
}}
}}
Line 152: Line 121:
{{Root|cave -E paludis:cross resolve --make cross-compile sys-kernel/linux-headers -x1}}
{{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|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}}
{{Root|cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1}}
Line 161: Line 131:
{{Root|cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1}}
{{Root|cave -E paludis:cross resolve --make cross-compile libatomic libgcc libstdc++ -x1}}


Install steam dependencies:
Prevent installing unneeded Python cross dependencies:
 
{{Root|cave -E paludis:cross resolve --make cross-compile pulseaudio --ignore-from systemd --ignore-from pulseaudio --suggestions ignore --recommendations ignore}}
 
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|
{{Root|cave -E paludis:cross resolve --make cross-compile xcb-proto -x1 -0 '*/*'}}
<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>
}}


=== 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 222: 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