[net.unix-wizards] /lib, /usr/lib, /usr/local/lib

topher@cyb-eng.UUCP (Topher Eliot) (04/20/84)

If my impression is correct, once upon a time there was /lib, where the
libraries were kept.  Then /usr/lib was added, for 'local stuff that isn't
part of the standard system, but that we still want to make available to
everyone on the machine', (well, ok, also for systems whose root disks
were too small.  But that doesn't occur very much these days).  For the
sake of tidiness, I would love to throw away /usr/lib, /usr/bin, and all
the other 'duplicate' directories.  But I can't, because those pathnames
are built into so many programs.

So now we have /usr/local/lib for 'local stuff that isn't part of the
standard system, but that we still want to make available to everyone on
the machine'.  Pretty soon that pathname will be compiled into lots of
programs, too.

What's next?  /usr/local/REALLYlocal/lib?

Am I missing something, or is this an undesirable trend?

Cheers,
Topher Eliot
Cyb Systems, Austin, TX
ihnp4!ut-sally!cyb-eng!topher

guy@rlgvax.UUCP (Guy Harris) (04/21/84)

> If my impression is correct, once upon a time there was /lib, where the
> libraries were kept.  Then /usr/lib was added, for 'local stuff that isn't
> part of the standard system, but that we still want to make available to
> everyone on the machine', (well, ok, also for systems whose root disks
> were too small.  But that doesn't occur very much these days).  For the
> sake of tidiness, I would love to throw away /usr/lib, /usr/bin, and all
> the other 'duplicate' directories.  But I can't, because those pathnames
> are built into so many programs.

Well, /usr/lib has been around for almost as long as /lib (if not as long);
it was in V6, along with /usr/bin.  I think the root disk size was the real
reason for both of them; the idea was to put the less-used stuff on /usr/bin
and /usr/lib.  Also, it makes the two directories smaller, which cuts down
on the directory search time if what you're looking for is in /bin or /lib
(of course, it slows things down if it's in /usr/bin or /usr/lib).

> So now we have /usr/local/lib for 'local stuff that isn't part of the
> standard system, but that we still want to make available to everyone on
> the machine'.  Pretty soon that pathname will be compiled into lots of
> programs, too.

> What's next?  /usr/local/REALLYlocal/lib?

> Am I missing something, or is this an undesirable trend?

I suspect, since /usr/lib wasn't created for local things, that this isn't
a trend.  I see no reason why it'll go beyond /usr/local/*.

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy

dmmartindale@watcgl.UUCP (Dave Martindale) (04/22/84)

I've always treated the root filesystem, including /bin and /lib,
as the places you store things that are absolutely necessary for
a bare system (with no other filesystems) to boot and run, and some
tools to let you fix things.  This keeps the root small, and you can
keep emergency copies of it on another disk or on tape easily.

/usr, on the other hand, gets the bulk of the system software.
System stuff mostly goes there - most binaries live in /usr/bin and
most libraries (and other "utility" things) live in /usr/lib.

/usr/local is a nice place to put stuff which belongs on "this" machine
only, or "this group of machines", when it is useful to distinguish it
from things which "everyone" has.

For example, at Waterloo /lib and /usr/lib are identical across all
of the VAXes running UNIX.  /usr/local/lib contains the graphics libraries
which exist only on watcgl.

Does this explanation make sense to you?

	Dave Martindale

lmc@denelcor.UUCP (Lyle McElhaney) (04/25/84)

On our VAX we have elected to leave all the distributed directories as
much like they were distributed as possible.  We have generated, under
/usr/local, a tree of directories which contain the differences to
everything we "fix" on the distribution, along with our own additions.
In this way we hope to be able to perform the ultimate disaster
recovery by:
	- restoring the distribution, from the distributed tapes;
	- restoring /usr/local from some other tape;
	- cd'ing to /usr/local and uttering "make";
	- waiting three days.
Call it paranoid; I've been bitten by the failed restore once too often.

Details available upon request. This is expanded slightly from the
original idea borrowed from evi@boulder (Evi Nemeth), of recent
"vi:*** in the passwd file" fame.
-- 
		Lyle McElhaney
		(hao,brl-bmd,nbires,csu-cs,scgvaxd)!denelcor!lmc

ptw@vaxine.UUCP (P. T. Withington) (04/26/84)

If *I* remember correctly, the reason for /usr/* was to keep the * directories
from using indirect blocks...

...which is less an less important as disk blocks get larger and path lists get
hashed.

                                o.o     --ptw
                                 ~