proton-caller
proton-caller copied to clipboard
Unable to run games via Steam library stored in /opt
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:
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.
You should not be running games available on steam using Proton Caller.
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.
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?
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:
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.
Would either of you be willing to use a version from source? proton-caller-git
for Arch users.
Certainly, though probably won't get a whole lot of testing time until Friday
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)