proton-caller icon indicating copy to clipboard operation
proton-caller copied to clipboard

Unable to run games via Steam library stored in /opt

Open zerkerX opened this issue 2 years ago • 9 comments

Hello. I was recently attempting to use Proton Caller version 3.1.0 on my setup to run the GOG version of Severed Steel and was not having much luck. Due to my drive arrangements, most of my Steam data is on /opt. Here is my configuration file for reference:

data = "/var/local/proton"
steam = "/home/zerker/.steam/steam"
common = "/opt/steam/steamapps/common"

Proton versions appear to be indexed correctly (minus 5.x for some reason):

$ proton-call -i
Indexed Directory: /opt/steam/steamapps/common

Indexed 4 Proton Versions:

Proton 6.3: /opt/steam/steamapps/common/Proton 6.3
Proton 3.7: /opt/steam/steamapps/common/Proton 3.7
Proton Experimental: /opt/steam/steamapps/common/Proton - Experimental
Proton 3.16: /opt/steam/steamapps/common/Proton 3.16

However, when I attempt to run the game the pressure vessel runner can't find proton itself:

/opt/windows/Severed Steel$ proton-call -p 6.3 -l -r ThankYouVeryCool.exe 
pressure-vessel-adverb[56199]: E: Failed to execute child process "/opt/steam/steamapps/common/Proton 6.3/proton" (No such file or directory)
proton-call: proton exited with: code: 127

Naturally, the file itself exists so I suspect this is something strange that pressure vessel is doing that isn't pulling it in. However, if I run a game through steam that is installed to /opt, I don't have that problem.

Here's the process listing when running Divinity Original Sin 2 for reference, but I don't see anything here that would explicitly be "adding" a path to the pressure vessel.

zerker     57135  0.0  0.1  30844 24348 ?        S    18:43   0:00 /home/zerker/.steam/ubuntu12_32/reaper SteamLaunch AppId=435150 -- /opt/steam/steamapps/common/SteamLinuxRuntime_soldier/_v2-entry-point --verb=waitforexitandrun -- /opt/steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /opt/steam/steamapps/common/Divinity Original Sin 2/bin/SupportTool.exe
zerker     57136  1.6  0.0   4548   756 ?        S    18:43   0:00 /opt/steam/steamapps/common/SteamLinuxRuntime_soldier/pressure-vessel/bin/pv-bwrap --args 26 /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb --generate-locales --fd 19 --regenerate-ld.so-cache /run/pressure-vessel/ldso --add-ld.so-path /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu --add-ld.so-path /usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu --set-ld-library-path /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/aliases:/usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/aliases --exit-with-parent --subreaper --shell=none --terminal=none --ld-preload=/home/zerker/.steam/ubuntu12_32/gameoverlayrenderer.so --ld-preload=/home/zerker/.steam/ubuntu12_64/gameoverlayrenderer.so -- /opt/steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /opt/steam/steamapps/common/Divinity Original Sin 2/bin/SupportTool.exe
zerker     57295  0.0  0.0  27228  4524 ?        Ss   18:43   0:00 /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb --generate-locales --fd 19 --regenerate-ld.so-cache /run/pressure-vessel/ldso --add-ld.so-path /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu --add-ld.so-path /usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu --set-ld-library-path /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/aliases:/usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/aliases --exit-with-parent --subreaper --shell=none --terminal=none --ld-preload=/home/zerker/.steam/ubuntu12_32/gameoverlayrenderer.so --ld-preload=/home/zerker/.steam/ubuntu12_64/gameoverlayrenderer.so -- /opt/steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /opt/steam/steamapps/common/Divinity Original Sin 2/bin/SupportTool.exe
zerker     57319  0.3  0.1  49144 20164 ?        S    18:43   0:00 python3 /opt/steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /opt/steam/steamapps/common/Divinity Original Sin 2/bin/SupportTool.exe
zerker     57323  0.3  0.2 1964452 39896 ?       Sl   18:43   0:00 c:\windows\system32\steam.exe /opt/steam/steamapps/common/Divinity Original Sin 2/bin/SupportTool.exe
zerker     57325 17.4  0.1  48404 17192 ?        Ss   18:43   0:05 /opt/steam/steamapps/common/Proton - Experimental/files/bin/wineserver

Maybe an environment variable? :shrug:

zerkerX avatar May 22 '22 22:05 zerkerX

Well, I just said that and decided to look up /proc/####/environ and confirmed there is indeed an environment variable. In my case, I needed to do: export STEAM_COMPAT_MOUNTS=/home/zerker/.steam:/opt:/var/local

Ideally, Proton caller should be providing mounts for the current folder, the proton library and the proton runtime folder.

zerkerX avatar May 22 '22 23:05 zerkerX

You should not be running games available on steam using Proton Caller.

caverym avatar May 22 '22 23:05 caverym

Well, the Divinity example was just for contrast. Regarding Severed Steel, I'd prefer to run a DRM-free version with Proton-Caller than the Steam version, but that's just me.

This is getting a bit sideways though. The problem is that on my setup the folders I've used are in non-standard locations and I need to use STEAM_COMPAT_MOUNTS to get proton-caller to work at all with pressure vessel. Proton-caller should be able to detect these locations since they are defined in its config and ensure they get mounted.

zerkerX avatar May 22 '22 23:05 zerkerX

I'm still trying to understand what the issue is here. If the drives are mounted and you have access to read and execute them, there's no reason why this wouldn't work unless it's a quirk inside pressure vessel or proton causing the issue. Can I see what your mount points are so I can recreate this in the future?

caverym avatar Jul 05 '22 03:07 caverym

Sure thing. Here is the relevant section from lsblk:

nvme0n1         259:0    0 476.9G  0 disk  
├─nvme0n1p1     259:1    0 290.1G  0 part  /opt
├─nvme0n1p2     259:2    0    99M  0 part  /boot/efi
├─nvme0n1p3     259:3    0   450M  0 part  /boot
├─nvme0n1p5     259:4    0  93.1G  0 part  /
├─nvme0n1p6     259:5    0  92.8G  0 part  /home

I also have /usr/local on a different drive (/var/local too), but that shouldn't matter for the issue above. The usr folder itself is just part of root. Some of the weirdness from above was me attempting to repurpose Windows partition entries when I finally blew away my entire Windows install :smile:

zerkerX avatar Jul 05 '22 23:07 zerkerX

FWIW, I'm seeing the same issue on Arch+ZFS+proton-call from AUR. I have my steam games sit in 4 file systems spread across 2 pools (long, complicated story). All of the proton builds are sitting in the steam3 filesystem:

$ proton-call -i
Indexed Directory: /tank/steam/steam3/steamapps/common

Indexed 8 Proton Versions:

Proton 3.16: /tank/steam/steam3/steamapps/common/Proton 3.16
Proton 4.11: /tank/steam/steam3/steamapps/common/Proton 4.11
Proton Experimental: /tank/steam/steam3/steamapps/common/Proton - Experimental
Proton 3.7: /tank/steam/steam3/steamapps/common/Proton 3.7
Proton 5.13: /tank/steam/steam3/steamapps/common/Proton 5.13
Proton 6.3: /tank/steam/steam3/steamapps/common/Proton 6.3
Proton 4.2: /tank/steam/steam3/steamapps/common/Proton 4.2
Proton 5.0: /tank/steam/steam3/steamapps/common/Proton 5.0
$ proton-call -p 6.3 -r 'test.exe'
pressure-vessel-LOG-0x100: Failed to execute child process "/tank/steam/steam3/steamapps/common/Proton 6.3/proton" (No such file or directory)
proton-call: proton exited with: code: 127

One thing that is sort of interesting is that I do have proton 7.0 installed, but proton-call doesn't see it.

EDIT:

just to confirm, setting STEAM_COMPAT_MOUNTS from a working run also worked for for proton-call.

aw-was-here avatar Jul 09 '22 15:07 aw-was-here

Would either of you be willing to use a version from source? proton-caller-git for Arch users.

caverym avatar Jul 26 '22 02:07 caverym

Certainly, though probably won't get a whole lot of testing time until Friday

zerkerX avatar Jul 26 '22 23:07 zerkerX

Same problem on a fresh source build from the main branch:

zerker@alpha:/opt/games/windows/Prey/Binaries/Danielle/x64/Release$ proton-call -p 7.0 -r Prey.exe 
info: Proton 7.0 not found, reindexing...
pressure-vessel-LOG-0x100: Failed to execute child process "/opt/steam/steamapps/common/Proton 7.0/proton" (No such file or directory)
proton-call: proton exited with: code: 127

(Testing with Prey this time)

zerkerX avatar Aug 01 '22 12:08 zerkerX