1

I want to create a folder on my linux system for Steam to download game data to. I am doing this so the data is shared between users, and games do not have to be downloaded multiple times.

Originally, I thought I should create a /opt/steam folder. But I started reading the recent FHS 3.0 spec, and now I'm not sure if it should be: - /usr/local/steam, or - /var/steam (or an appropriate sub-directory of /var?)

To be FHS-compliant, where should Steam place games? And if it's between /usr/local and /var, why is one better than the other?

Thanks

Info below about FHS 3.0

  • FHS 3.0 - http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
  • /usr/local purpose in FHS 3.0:

    4.9.1. Purpose

    The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr.

    Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to replace or upgrade software in /usr.

  • /var purpose in FHS 3.0:

    5.1. Purpose

    /var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.

    Some portions of /var are not shareable between different systems. For instance, /var/log, /var/lock, and /var/run. Other portions may be shared, notably /var/mail, /var/cache/man, /var/cache/fonts, and /var/spool/news.

    /var is specified here in order to make it possible to mount /usr read-only. Everything that once went into /usr that is written to during system operation (as opposed to installation and software maintenance) must be in /var.

    If /var cannot be made a separate partition, it is often preferable to move /var out of the root partition and into the /usr partition. (This is sometimes done to reduce the size of the root partition or when space runs low in the root partition.) However, /var must not be linked to /usr because this makes separation of /usr and /var more difficult and is likely to create a naming conflict. Instead, link /var to /usr/var.

    Applications must generally not add directories to the top level of /var. Such directories should only be added if they have some system-wide implication, and in consultation with the FHS mailing list.

0

Oftentimes /opt is used for such a purpose.

The use of /opt for add-on software is a well-established practice in the UNIX community. The System V Application Binary Interface [AT&T 1990], based on the System V Interface Definition (Third Edition), provides for an /opt structure very similar to the one defined here.

And games are additional (i.e. nonnecessary) software.

0

From the FHS, what you should follow, as a system administrator, is the places where you should let the distribution do what it wants. Don't do anything under /bin, /lib*, /sbin, or /usr except for /usr/local. /var and /opt have a mixed status. Some distributions ship packages that install in /opt, others don't. As a system administrator, use sensible directory names derived from package names under opt, for software that is not also installed as a package installing in /opt. As for /var, it depends on the directory, each /var/*/* has sort of its own rules. /var/local is your playground to use as you see fit.

There are many places where it could make sense to install extra games:

  • /opt/NAME-OF-GAME
  • /opt/games/NAME-OF-GAME
  • /opt/steam/NAME-OF-GAME
  • /usr/local/games/NAME-OF-GAME
  • /usr/local/lib/steam/NAME-OF-GAME
  • /var/local/steam/NAME-OF-GAME

Which one to use depends on your sharing policies (what machines mount the same directories over a protocol like NFS), on your backup policies (what directory trees are backed up when and to where), on your access control policies (who has access to which directories), etc. There's no single right answer. Pick whichever works best for you.

  • FHS 3.0 is trying to clarify the purpose of each folder, especially for /usr/local and /var. There has to be something specific to the way Steam downloads game data, and where it would be most appropriate? When I read sentences such as "Everything that once went into /usr that is written to during system operation (as opposed to installation and software maintenance) must be in /var.", that seems like a very black and white statement to me. I'd love to understand what that means. Maybe someone has an example of a specific program/files that must be in /var based on that statement? – Sinayion Jun 14 '15 at 18:12
  • @Sinayion Distributions must never write to /usr except as part of package maintenance. Is installing a new Steam game package maintenance? Is that distinction even relevant for you? You, the system administrator, get to decide. Keeping /usr read-only only matters in setups where the disk is mounted read-only or shared between machines, which is not the case for most installations. – Gilles Jun 14 '15 at 18:23
  • Interesting. I didn't read it as "distributions", but I see how that may be the intention of the paragraph. Now I'm leaning towards /var being the most correct folder for this situation. – Sinayion Jun 17 '15 at 19:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.