What does the filesystem hierarchy standard really mean by "local data"?
From the filesystem hierarchy standard, /usr/local would be for "local data, specific to this host." But I don't quite understand that, since isn't the entire filesystem usually local to the host? i.e. /bin contains binaries, and those binary files will only be used to invoke processes on this host, generally speaking. A second host would have its own copy of binaries, though they might actually be the same if you diffed them.
So, can you explain the meaning of "local data"? In what sense is it local?
Solution 1:
since isn't the entire filesystem usually local to the host?
No, sharing the read-only parts (e.g. all of /usr
or even the entire /
) across the network was actually quite common.
Although I think that's not the point. "Specific to this host" can also mean not provided by the distribution – it's software you've built and installed by hand, as opposed to the rest of /usr containing generic packaged files (which would indeed be the same across many hosts).
For example, many source code build systems use /usr/local
as the default install location. If you just run ./configure && make && make install
, it will dump everything to /usr/local/bin and such.
Solution 2:
Expanding on the answer by @grawity:
The term "local" stems from a time, when there was only a single UNIX. In this context, all systems running the same version would have a big set of files identical between all hosts, with accordingly only a minority of other files differing between hosts.
These non-universal files would either be configuration data in /etc
, or optitional files in /opt
or "something else, local to the host" - i.e. */local
.
In modern times, when there are (wildly) different members of the UNIX family tree and storage requirements for the OS being a tiny fraction of the total storage typically available, many coming in different flavours (*BSD, Linux distros), the term "local" has been watered down, maybe even into a historical relict.