ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24k stars 1.05k forks source link

Proton 5.0-5 fails to extract bin folder on NTFS #3680

Open BlueGoliath opened 4 years ago

BlueGoliath commented 4 years ago

On Proton 5.0-5 the "bin" folder within the "dist" folder will fail to extract from the archive when Proton is on NTFS. The "bin" folder may be extracted manually by opening the archive and dragging the "bin" folder from within to the "dist" folder and games should then launch. All other folders from the archive extracts correctly.

On earlier versions of Proton(4.11-13), this also fails. The extraction script, however, seems to work differently in that when it fails to extract the "bin" folder it will delete the "dist" folder and try again... only to fail over and over.

All of this is repeatable after multiple Proton install moves between the Linux drive and the NTFS one and reboots.

Distro: Arch Linux(up-to-date) Windows chkdsk: no disk errors detected.

I'm guessing this is a bug with a system package, but no clue which.

aeikum commented 4 years ago

Using Proton with Steam libraries on NTFS isn't recommended. I'd suggest switching to a Linux filesystem. If you must stick with NTFS, can you try looking further into why extracting bin fails? There might be some revealing output from the proton script if you run Steam in a terminal.

BlueGoliath commented 4 years ago

Using Proton with Steam libraries on NTFS isn't recommended. I'd suggest switching to a Linux filesystem. If you must stick with NTFS, can you try looking further into why extracting bin fails? There might be some revealing output from the proton script if you run Steam in a terminal.

I'm aware. This, however, never used to be an issue. It only started recently, which makes me think that a system package is borked.

Unless i'm missing something, there is no error message from the Proton script. The only error is when Steam attempts to execute wineserver from bin.

If there was a feature-rich alternative filesystem that works on both Windows and Linux i'd use it, but there isn't AFAIK. UDF support in botch Linux and Windows is borked.

aeikum commented 4 years ago

Could be a bug, or some bad error handling, in Python's tar extraction, I guess.

If you're able to successfully extract the dist tar by hand, something like this should work:

cd Proton\ 5.0/
mkdir dist/
tar  -C dist/ -xf proton_dist.tar
cp version dist/version

Proton should only wipe the dist/ directory if the version files don't match (the one that lives in the tar has a different version tag, so you have to overwrite it; I should fix this).

BlueGoliath commented 4 years ago

Given that it can be extracted by hand, would it be safe to rule out any possibility that the cause is NTFS?

aeikum commented 4 years ago

I can't say that without more information. For example maybe the Python tar extraction is failing because it's trying to set some file attribute which NTFS doesn't support.

Waistless commented 4 years ago

I would propose that when steam detects a library on an NTFS drive, steam symlinks the proton folder to the one in the main steam installation (i.e $HOME/.steam). I would strongly suggest this happen this for the compatdata folder as well since it can create invalid file names for an NTFS filesystem (drive symlinks such as C: Z:)

It might even preferable to do this automatically for all steam libraries. Because lets say you install a proton game in library A, and a proton game in library B, you'll have the same version of proton installed in both libraries A and B, when a simple symlink would cut down on used space.

Also, when automounting with fstab, make sure the user using steam with this drive has full ownership, for example uid=1000,gid=1000,rw,user,exec,umask=000

defaults actually works with most proton games, but in rare situations such as Doom Eternal, it was causing crashes on startup, rectified by setting ownership.

If you want to have a steam library shared across Windows and Linux, here's how I set mine up to avoid any conflict or filesystem issue:

Symlink the following to their Windows steam library counterparts:

Symlink the following to your home linux drive counterparts: