What to do about NFS and SIGBUS
rachelbythebay.com
rachelbythebay.com
This was typically done by a network of symlinks. As best I can remember, you'd have /opt/local exported from the server, with all the open source goodies. It was arranged something like
/opt/local/emacs-19.1.7/bin/emacs
/opt/local/emacs-19.1.8/bin/emacs
/opt/local/emacs -> /opt/local/emacs-19.1.7
<....>
All the clients would have a local /usr/local with another symlink, /usr/local/bin/emacs pointing at /opt/local/emacs/bin/emacs
When you upgraded from 19.1.7 to 19.1.8, you'd just move the symlink on the server. You'd then wait a week or two, and garbage collect the old version (after rsh'ing around to the clients to make sure none had the old version open, if your users were lucky).
The local network of symlinks into /opt/local was maintained by something like cfengine, which ran at install and nightly to update configs (eg, for newly supported stuff, or new binaries in new versions of existing software).
If you screwed this up, and replaced a binary out from under a user, they were rather unhappy..
https://www.cs.cmu.edu/~help/unix_linux/software_collections...
http://static.usenix.org/publications/library/proceedings/li...
Stow apparently started development in 1996 and was initially named depot:
http://git.savannah.gnu.org/cgit/stow.git/tree/doc/ChangeLog...
So probably?
Even before that, in a supercomputing context (2002-), when writing MPI "wrapper" software that would be used on end-user clusters with all kinds of unfortunate network setups, I avoided a lot of trouble by copying the executable to the local node before running it.
This isn't a new issue. And the traditional solutions work.
I strongly prefer the trades-off of stateless systems in that context, though I might prefer to do it off a parallel filesystem, and clearly your kilometreage varies. [From experience ~10 years ago, I'd say avoid GPFS more than NFS, but doubtless it's improved, and I hold no brief for NFS.]
This magic only solves have the problems
fruit:resource = xattr
fruit:metadata = netatalk
fruit:locking = none
fruit:encoding = private
delete veto files = yes
veto files = /.snapshot/.windows/.mac/.TemporaryItems/.DS_StoreNFS is a way to share files, not provide a reliable application platform. There are lots of options you can enable to make it more stable, but it simply isn't designed as an application platform, so it's all going to be hacks.
And keep in mind that NFS is not secure. Supposedly it can be secured, but I have never seen this in a production environment. Running an application over it is just a bad idea from a security standpoint. Home directories over it are a terrible idea from both a security and stability standpoint.
Finally, don't try to change a file and expect stability. If you need a new version of a file with some change to it, make a new file and use that new file path.
We started seeing weird whole-display freezes on bunches of the X Terminals one day. It took a while to correlate that these happened at the same time one of the newly-installed Alphas in a far-off office was doing a lot of file I/O over NFS - saturating the entire coax segment and freezing the displays...
IIRC the "upgrade to 100BaseT" project got scooted WAY up on the priority list right after that. :)