Steam: Difference between revisions

From Q
Jump to navigation Jump to search
Tgurr (talk | contribs)
No edit summary
 
(48 intermediate revisions by 2 users not shown)
Line 3: Line 3:
{{Command|steam --reset}}
{{Command|steam --reset}}


== Start Steam with debug output enabled ==
{{Command|<nowiki>STEAM_RUNTIME=1 STEAM_DEBUG=1 steam</nowiki>}}
== 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.
{{Command|<nowiki>strace %command% 2>&1 | tee ~/strace.log</nowiki>}}
== 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.
{{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*}}
=== 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 ===
{{Command|cd ~/.steam/steam/SteamApps/common/Duke\ Nukem\ 3D/bin/}}
{{Command|ln -s /usr/lib/nvidia/libGL.so.1 libGL.so}}
=== Shadow Warrior Classic Redux ===
{{Command|cd ~/.steam/steam/SteamApps/common/Shadow\ Warrior\ Classic/bin/}}
{{Command|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|
<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}}
=== Target - Prepare cross environment ===
Create a copy of your paludis environment.
{{Root|cp -a /etc/paludis /etc/paludis-cross}}


== Bug [https://github.com/ValveSoftware/steam-for-linux/issues/1040 1040]: Let Steam client windows be managed by the window manager ==
In the cross environment you can remove any repository .conf not needed, required are ::arbor, ::desktop, ::gnome, ::media and ::x11 (::hardware for nvidia-drivers).
Lets you close Steam to the tray instead of having it sit in the task bar.


{{File|~/.bash_profile|
{{File|/etc/paludis-cross/repositories/i686-pc-linux-gnu.conf|
<pre>
<pre>
# Steam close to tray workaround
format = exndbam
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
location = ${root}/var/db/paludis/repositories/cross-installed/i686-pc-linux-gnu
export STEAM_FRAME_FORCE_CLOSE=1
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>
</pre>
}}
}}


{{Root|mkdir -p /var/db/paludis/repositories/cross-installed/i686-pc-linux-gnu}}


== Bug [https://github.com/ValveSoftware/steam-for-linux/issues/529 529]: Error: SELinux is preventing steam from using the 'execheap' accesses on a process ==
{{File|/etc/paludis-cross/bashrc|
Enable workaround: {{Root|setsebool -P selinuxuser_execheap 1}}
<pre>
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"
</pre>
}}


Disable workaround: {{Root|setsebool -P selinuxuser_execheap 0}}
{{File|/etc/paludis-cross/platforms.conf|
<pre>
*/* x86 ~x86
</pre>
}}


{{File|/etc/paludis-cross/options.conf|
<pre>
*/* 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


== Force Steam to use the system libs instead of the STEAM_RUNTIME which usually is the default and only supported upstream configuration ==
# Steam minimal dependencies setup
{{Command|<nowiki>STEAM_RUNTIME=0 steam</nowiki>}}
*/* -bash-completion
*/* parts: -configuration -documentation
dev-libs/libglvnd X
</pre>
}}
 
{{File|//etc/paludis-cross/suggestions.conf|
<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:


== Start Steam with debug output enabled ==
{{Root|cave resolve gcc --no-follow-installed-dependencies -x1}}
{{Command|<nowiki>STEAM_RUNTIME=1 STEAM_DEBUG=1 steam</nowiki>}}
 
{{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 '*/*'}}


== Debug a Steam application / game with strace ==
=== Cross environment (NVIDIA) ===
Open the Steam options of the specific application and enter the following command into the start parameters form.
{{Command|<nowiki>strace %command% 2>&1 | tee ~/strace.log</nowiki>}}


Install the 32bit libraries of nvidia-drivers.


== Game specific workarounds (required on e.g. Fedora) ==
{{File|/etc/paludis-cross/options.conf|
=== Duke Nukem 3D: Megaton Edition ===
<pre>
{{Command|cd ~/.steam/steam/SteamApps/common/Duke\ Nukem\ 3D/bin/}}
x11-drivers/nvidia-drivers -tools
{{Command|ln -s /usr/lib/nvidia/libGL.so.1 libGL.so}}
</pre>
}}


=== Shadow Warrior Classic Redux ===
{{Root|cave -E paludis:cross resolve --make cross-compile nvidia-drivers --ignore-from xorg-server}}
{{Command|cd ~/.steam/steam/SteamApps/common/Shadow\ Warrior\ Classic/bin/}}
{{Command|ln -s /usr/lib/nvidia/libGL.so.1 libGL.so}}


=== Dungeon Defenders Eternity ===
=== List of installed cross packages ===
{{Command|cd ~/.steam/steam/SteamApps/common/DunDefEternity/DunDefEternity/Binaries/Linux}}
{{Command|ln -s ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/* .}}


=== Hammerwatch (Achievements not working on 64bit version) ===
{{File|List of installed packages|
Make it run the 32bit version regardless of the host architecture.
{{File|~/.steam/steam/SteamApps/common/Hammerwatch/RunHammerwatch|
<pre>
<pre>
        if [ "$ARCH" == "x86_64" ]; then
dev-libs/libbsd
                ./Hammerwatch.bin.x86 $@
dev-libs/libglvnd
        else
dev-libs/libmd
                ./Hammerwatch.bin.x86 $@
dev-libs/libpthread-stubs
        fi
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
</pre>
</pre>
}}
}}

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