-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
I've followed these instructions on Reddit to allow multiple Linux users to share the same installation folder without dealing with permission issues. That seems to work so far for Linux-native games.
The issue with Proton games is that Wine does not allow using a Wine-Prefix that doesn't belong to the current user.
Example:
Both Steam clients on both Linux accounts are configured to download the games in /opt/games/Steam
.
User maykin
installs a Windows game and a Wineprefix in /opt/games/Steam/steamapps/compatdata/430190/pfx
is created.
User steamuser
wants to play the same game.
It does not need to install the game again, since maykin
already installed it.
When attempting to start the game nothing happens (no game & no error message).
When inspecting the logs the following error occur:
Installing breakpad exception handler for appid(steam)/version(1618256785)
Proton: Upgrading prefix from 5.13-1 to 6.3-2 (/opt/games/Steam/steamapps/compatdata/430190/)
Proton: Removing stale builtin /opt/games/Steam/steamapps/compatdata/430190/pfx//drive_c/windows/system32/amd_ags_x64.dll
Proton: Removing stale builtin /opt/games/Steam/steamapps/compatdata/430190/pfx//drive_c/windows/syswow64/amd_ags_x64.dll
wine: '/opt/games/Steam/steamapps/compatdata/430190/pfx' is not owned by you
wine: '/opt/games/Steam/steamapps/compatdata/430190/pfx' is not owned by you
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
wineserver: /opt/games/Steam/steamapps/compatdata/430190/pfx is not owned by you
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/steamuser/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
wine: '/opt/games/Steam/steamapps/compatdata/430190/pfx' is not owned by you
The relevant part is (so I assume) wine(server): /opt/games/Steam/steamapps/compatdata/430190/pfx is not owned by you
.
The directory is owned by maykin
but steamuser
has read and write access to it but Wine - for security reasons apparently - doesn't care and demands that the prefix is owned by the current user, i.e. steamuser
.
My suggestion:
- Create a new prefix per user:
Instead of creating the prefix here:/opt/games/Steam/steamapps/compatdata/<gameid>/pfx
we could place it there:/opt/games/Steam/steamapps/compatdata/<gameid>/pfx/<userid>
- Use symbolic links so that all prefixes share the same data:
Put thedevice_c
in a separate directory outside the prefix, e.g. in/opt/games/Steam/steamapps/compatdata/<gameid>/data
, and place a symbolic link in/opt/games/Steam/steamapps/compatdata/<gameid>/pfx/<userid/device_c
that points to thedata
directory