[OpenAFS] Re: common.ARCH.(bin|sbin|etc)

John Tang Boyland boyland@solomons.cs.uwm.edu
Fri, 24 May 2002 10:34:15 -0500


Regarding /usr/local and packages:

We make a volume pkg.blah for each software package blah
and mount it at /afs/<cell>/package/blah.  The volume has
the blah-3.5 directory in it.  The volume root also
then has two links in it: "current" and "latest", so that
(for example)
     current -> blah-3.5
     latest -> blah-3.6b2
(Of course, common and latest could point to the same thing,
 and often do.)

Inside blah-3.5, we have 
   @sys/{bin,lib,...}
   common/{man,doc,...}
   common/install/  <-- where the source and configure scripts live

Then we have a shared volume common.usr.local
(mounted as /afs/<cell>/common/usr/local)
which has links like:
   bin/doblah -> /afs/<cell>/package/blah/current/@sys/bin/doblah
   lib/libblah.a -> -> /afs/<cell>/package/blah/current/@sys/lib/libblah.a
   man/man1/blah.1 -> /afs/<cell>/package/blah/current/common/man/man1/blah.1

We have another shared volume called common.usr.new
that has the same links but with "latest" in the path rather than
"current".  This can be linked from /usr/new for those who like to
live on the bleeding edge.

This way installing a new version of package 'blah' is pretty easy:
The new directory blah-3.6 is created and populated.  Then the link
"latest" is moved to point to blah-3.6 instead of blah-3.6b2.
The new installation can be tested for a while from /usr/new.
When satisfied, the switch can be made by simply changing the
"current" link.

This system is not as elaborate as something like CMU may have but
permits us to maintain many packages (80+ currently) with a modicum
of system adminstration work (we have only volunteer admin time).

John Boyland