protonscr

Shared / symlinked games update everytime when I start Steam on another operating system

steamclosed Feature Requestreviewed
ValveSoftware/steam-for-linux#123 · opened 2012-12-20 by aeto · updated 2014-05-08 · 9 comments · github
Aaeto 2012-12-20 github

Maybe this isn't very important. But since many users are still maintaining a windows installation I think there are lots of people who symlink directories to save space because they don't want to waste it on games which are already installed on another harddisk/partition.

I use a windows installation where I play games that are not available on Linux.
To save some space I symlink single folders inside of the SteamApps folder to the respective directory on my windows partition.

It's the same if I symlink the whole SteamApps folder but Team Fortress 2 won't work anymore if I do that. That's why I symlink single folders.

Anyway, if I do this, everytime I change the operating system and start Steam it updates almost all the games.
This is not limited to games which are available on Linux. Windows-only games are updated as well.

For some games it shows 0 bytes but other games need "more" to be downloaded up to the entire game (Trine 2).
Here's a short list of games that want to download more than "0 bytes":

  • And Yet It Moves (1.1 MB)
  • Amnesia (17.1 MB)
  • Borderlands (988.3 MB)
  • Eversion (11.6 MB)
  • Harvest (1.2 MB)
  • Osmos (1.7 MB)
  • Serious Sam 3 (31.7 MB)
  • Serious Sam 3 Editor (12.0 MB)
  • Space Pirates and Zombies (2.4 MB)
  • Steel Storm (8.3 MB)
  • Trine 2 (2.6 GB - yes, GB)

I know that symlinking is probably the problem. Since many of us do it anyway I thought I'll point that out because you might want to save some traffic on your servers.

For now I paused the unnecessary downloads and only resume them if I want to play this game on the current operating system.

The NTFS partition with the Steam installation for windows on it is mounted with the uid and gid of my account which I also use for Steam.

And here's the system information from the Steam client. Although I don't think it's really necessary here.

Processor Information:
    Vendor:  GenuineIntel
    Speed: 3301 Mhz
    4 logical processors
    4 physical processors
    HyperThreading:  Unsupported
    FCMOV:  Supported
    SSE2:  Supported
    SSE3:  Supported
    SSSE3:  Supported
    SSE4a:  Unsupported
    SSE41:  Supported
    SSE42:  Supported

Network Information:
    Network Speed:  

Operating System Version:
    Ubuntu 12.10 (64 bit)
    Kernel Name:  Linux
    Kernel Version:  3.5.0-21-generic
    X Server vendor:  The X.Org Foundation
    X Server release:  11300000

Video Card:
    Driver:  NVIDIA Corporation GeForce GTX 670/PCIe/SSE2

    Driver Version:  4.2.0 NVIDIA 304.43
    Desktop Color Depth: 24 bits per pixel
    Monitor Refresh Rate: 59 Hz
    VendorID:  0x10de
    DeviceID:  0x1189
    Number of Monitors:  3
    Number of Logical Video Cards:  1
    Primary Display Resolution:  1920 x 1200
    Desktop Resolution: 5120 x 1200
    Primary Display Size: 21,50" x 13,86"  (25,55" diag)
                                            54,6cm x 35,2cm  (64,9cm diag)
    Primary Bus: PCI Express 16x
    Primary VRAM: 2048 MB
    Supported MSAA Modes:  2x 4x 8x 16x 

Sound card:
    Audio device: Realtek ALC892

Memory:
    RAM:  7963 Mb

Miscellaneous:
    UI Language:  English
    LANG:  de_DE.UTF-8
    Microphone:  Not set
    Total Hard Disk Space Available:  98328 Mb
    Largest Free Hard Disk Block:  27100 Mb

Installed software:

Recent Failure Reports:

Mmdaffin 2012-12-20 github

The problem is the binaries are going to be different for the Linux install and the windows install... I don't think steam will behave very will if you symlink steamapps from windows to Linux due to this.

You could try symlinking just the game data (and not the binaries) but that would be quite a bit of effort and might not work.

But most of the Linux games are small enough that this doesn't really matter and you might as well just have the separate installs.

Aaeto 2012-12-20 github

I know that it's not that easy. But since symlinking the SteamApps folder seems common practice (according to the forums) I thought I should point that out.
It's up to Valve what they want to do with that information.

Also there's the option to add additional directories to the library. So it's not limited to symlinking.
And since Valve give us that option this is definitely something they should be aware of.

Before I symlinked the SteamApps folder to my windows partition I added this folder as addtional directory because I thought I could then choose that as install directory for games.
Every game which already was in that folder received it's regular updates if released, no matter if it's a linux or a windows-only game. So the linux Steam client is aware of already installed windows games in the library.

Also, why does e.g. Borderlands has that problem with updating everytime I switch from windows to linux and vice versa? There are no linux binaries afaik.
And why does the Steam client try to download Trine 2 in its entirety everytime? That doesn't make much sense to me.

Don't get me wrong. Of course I could play by the rules and install every game again using twice the space. That wouldn't hurt for the most games available now for linux. But TF2 and Trine 2? That would be just a bit too much.

Also the option of using more than one directory is there, out of the box.
You can include every windows directory in your library just by adding it within the client and that's the point.

edit: this all may sound a bit harsh. But I can asure you it's really not meant like that.

Mmdaffin 2012-12-20 github

Symlinking should work if you are Symlinking from the same type of system
but trying to share steam apps across two different systems is going to
cause problems.

Your best bet is to Symlinking the data directories only for the larger
games but even then you might have problems.
On Dec 20, 2012 6:49 PM, "aeto" [email protected] wrote:

I know that it's not that easy. But since symlinking the SteamApps folder
seems common practice (according to the forums) I thought I should point
that out.
It's up to Valve what they want to do with that information.

Also there's the option to add additional directories to the library. So
it's not limited to symlinking.
And since Valve give us that option this is definitely something they
should be aware of.

Before I symlinked the SteamApps folder to my windows partition I added
this folder as addtional directory because I thought I could then choose
that as install directory for games.
Every game which already was in that folder received it's regular updates
if released, no matter if it's a linux or a windows-only game. So the linux
Steam client is aware of already installed windows games in the library.

Also, why does e.g. Borderlands has that problem with updating everytime I
switch from windows to linux and vice versa? There are no linux binaries
afaik.
And why does the Steam client try to download Trine 2 in its entirety
everytime? That doesn't make much sense to me.

Don't get me wrong. Of course I could play by the rules and install every
game again using twice the space. That wouldn't hurt for the most games
available now for linux. But TF2 and Trine 2? That would be just a bit too
much.

Also the option of using more than one directory is there, out of the box.
You can include every windows directory in your library just by adding it
within the client and that's the point.


Reply to this email directly or view it on GitHubhttps://github.com/ValveSoftware/steam-for-linux/issues/123#issuecomment-11585670.

Rrayza 2012-12-24 github

I agree with the original poster and I do have the same problem even with just adding the Steam library which I use on Windows in the client (which btw I can't remove since Steam tells me it needs to be empty. I'd really like to decide myself whether I remove a library from the list or not. A warning message would be ok though.)

I'd really dislike to download (ok I can copy it) and store game data twice, and manually linking game data is really a fuss and especially newbie and non-technically-skilled users can't be asked to do this in order to save space.

Also I think the binaries mostly have different names/extensions so there shouldn't be a problem with having both binaries in the same folder. If there are conflicts those could be solved by having e.g. 2 different folders for the conflicting data.

Or people could specify the library used on Windows until now and have the Linux binaries in their corresponding subfolder of their home folder and Steam e.g. automatically syslinks the necessary game data if the data is already present in the library used on Windows.
(Maybe ask the user whether he would like to use the game data already present or have it separately in the original library on Linux)

No matter how exactly, but I think a shared library is important both to users and Valve to save space, traffic, time and thus money.

Aaeto 2012-12-26 github

I encountered the same behaviour when I deleted all the symlinks. As you already pointed out, it is not possible to delete the added windows/linux shared folder from the library as long as there are games installed in it.
So the problem are not the symlinks.

Adding a directory with Steam games in it which is already there would be the first thing everybody'll do when using linux and windows on the same system to save some space. And since this feature is already in the client it should be taken care of.

I guess it should work if you rename the SteamApps folder on the windows partition, start Steam and delete the directory from you library. Then you can rename it again so it works on windows.

But I think this feature is really important and maybe there is a way it could work somehow without having to update even games that don't work on linux when changing the operating system. Because of this behaviour I think that the problem is not caused by some linux specific files.

DDarkStarSword 2013-01-07 github

In addition to the below, these two threads may be of interest which explain why Trine 2 wants to redownload multiple gigabytes (Check the dev's post in the first thread):
http://steamcommunity.com/app/35720/discussions/0/864950841110870710/
http://forums.steampowered.com/forums/showpost.php?p=33308611&postcount=4015

I feel that I've already commented on the matter of symlinking the SteamApps directory between Windows and Linux on too many occasions, so here's a summary I intend to paste on any related threads I see from now on:

  1. DON'T SYMLINK YOU STEAMAPPS FOLDER! BAD THINGS WILL HAPPEN!
  2. If you have already done so than unfortunately you have more than likely corrupted your game library. You may get errors when trying to launch some of the games from one OS, and some games may have been entirely deleted -- even games that are not on Linux.
  3. At this point you should be using ls -ltr and find -newer to work out which games may have been corrupted and either restoring them from backups or using Steam's verify integrity of game cache to redownload any corrupt/deleted files. My script announced here may be of some help to find missing files (it will not find corrupt files) in batch: http://steamcommunity.com/app/221410/discussions/0/846941710185740762/
  4. If you would like more explanation, please refer to my posts in the following threads:
    http://steamcommunity.com/app/221410/discussions/0/882966056426061212/
    http://steamcommunity.com/app/221410/discussions/0/882966056593457599/
    http://steamcommunity.com/app/221410/discussions/0/882964117811583091/
    http://steamcommunity.com/app/221410/discussions/0/882964676304396070/
    Bug https://github.com/ValveSoftware/steam-for-linux/issues/546
  5. If you absolutely must save space, you might instead try using rdfind to link only the identical files together instead of linking the entire SteamApps directory. PLEASE NOTE THAT I HAVE NOT YET TESTED THIS AND SUSPECT THAT THERE MAY BE ISSUES WHEN GAMES ARE UPDATED (but they are unlikely to be as serious as the above corruption issue).

EDIT: Made points 2 & 3 a bit more helpful.

Aaeto 2013-01-07 github

Thanks a lot for that.
Although point two and three of your list seem a bit harsh. Just tell people that they could also check the file integrity after removing the symlinks or the shared library folder and they should be good to go. No need to delete and redownload an entire game if you haven't made a backup you could restore.

But you have to agree that it is common sense to try to save some space if Steam gives you the opportunity as you can add your windows folder to your library.
There should be some message when you add another folder to your library that it is not a good idea to add your windows library as a shared folder. Maybe with a link to a more detailed explanation of that matter.

DDarkStarSword 2013-01-08 github

I've edited my post to make points 2 and 3 a bit less harsh and more helpful. Originally I wanted to really convey to people who come across this post that it is a very bad idea, even if at first it sounds like it should work, but I guess if they already went past step 1 it's too late anyway. BTW now I've written a tool to parse the manifest files I've been thinking about writing another script to automatically identify and link identical files between two repositories based on that instead of having to scan every single file with rdfind.

Ggdrewb-valve maintainer 2013-01-08 github

Unfortunately you can't share the same app directory between different versions of Steam. This isn't likely to change in the future so we are closing this bug.