2008-02-08
Why /usr/local
is now useless (and where it came from)
Right from the early days of vendor provided Unix, two things were
relatively obvious to people: first, you were going to need to add
a bunch of local programs to make the system really useful to your
users, and second, adding local programs to vendor areas like /bin
or /usr/bin
was a pretty sure road to doom and disaster. So people
started putting them somewhere else.
(The most famous example is that BSD Unix put a bunch of their additions
in /usr/ucb
, which then turned into a vendor area of its own that you
shouldn't add commands to yourself.)
Eventually, a rough consensus emerged that /usr/local
was the default
place for 'locally added programs'. Not everyone used it, but enough did
that things like configuration systems started defaulting to putting
things there if you didn't tell them otherwise.
The downfall of /usr/local
was some vendors getting excessively
clever (or just excessively lazy) and shipping programs that installed
into /usr/local
. Since vendors might now randomly dump things into
/usr/local
, it was no longer safe to use for your own local programs;
it had effectively become a vendor area, and people abandoned it. At the
same time most vendors avoided it, because it was after all supposed to
be a local area.
The result has been to turn /usr/local
into a no man's land, where
it's not safe for anyone to install anything.
(There were two sorts of bad vendors here. The operating system vendors
decided that clearly they should ship their packaged versions of free
software to install into /usr/local
(after all, that was the default);
the third party software vendors decided that since everyone seemed
to put software in /usr/local
, they should ship their packages to
install there too (after all, they weren't the OS vendor). Both badly
misunderstood the real need and use for /usr/local
.)