From: jochen fritz <jfritz@rdrc.rpi.edu>
Subject: Re: A discipline for packages
Organization: Rensselaer Polytechnic Institute, Troy, NY
Date: Mon, 4 Jan 1993 02:46:08 GMT

In article <725686556snx@crynwr.com> nelson@crynwr.com (Russell Nelson) writes:
>You know something I've always hated about Unix (and people are
>starting to hate about Windows)?
>
>When you install a package, it inserts itself inextricably into
>various places in your system.
>
>What I would rather see is a subdirectory per package.  For example,
>/package/sendmail (and the corresponding subdirectories lib, src, cf,
>man.1, man.5, man.8, bin, etc).
>
>This seems a lot cleaner than every program in the world inserting
>itself into /etc, /usr/lib/, /usr/bin, /usr/man,
>/usr/local/lib/package, etc.  Of course, you'd still need to have
>these things inserted into the standard places, so that it still
>looked like a Unix machine.  But this could be done through the use
>of symbolic links and a program that automatically created them.  It
>would walk through /package/*/bin for things to put into /usr/bin,
>/package/*/man* for things to put into /usr/man/man*, /package/*/etc
>for things to put into /etc.
>
>Then, when you wanted to remove a package, you'd just rm -r
>/package/name, then re-run the symlinks builder.
>
>Of course, chasing down all these symlinks is going to make your
>system less efficient.  But that's solvable by creating cache files,
>and gradually improving programs so that they look in the cache files
>instead of at the symlinks.  Of course, the cache files get
>automatically built also.
>
>And, of course, the symlinks builder could also be told to look in
>places other than /package.
>
>Why don't I just go off and do this myself?  Well, because the chief
>benefit comes from easy package installation/removal.  These benefits
>don't come unless people *do* it.
>
>-russ <nelson@crynwr.com> What canst *thou* say?
>Crynwr Software           Crynwr Software sells packet driver support.
>11 Grant St.              315-268-1925 Voice  |  LPF member - ask me about
>Potsdam, NY 13676         315-268-9201 FAX    |  the harm software patents do.


I've been troubled by the same thing.  However, i see the problem as a
little more general.  It seems that root (or bin) should not be the
only one supplying packages, or forcing pachages into people's paths.
Thus, what we need is a system for users to provide and selectivly
install packages.  

Here at RPI, they have solved the package management problem.
Hovever, their solution is slow and inelegant.  However, it and the
idea of overmounting did inspire me to plan and prototype a simpler
solution.  In this scheme, all the "usual" little utilities go in /bin
or /usr/bin, however, that's ALL that goes there.  Everything else ius
a package. 

Each package is installed in its own directory, and a user makes a
symlink to it to use a package.  Thus a user simply types "setup
/packages/gnuplot".  A few seconds later, they have a set of symlinks
out of their private bin directories to the appropiate binaries.  So
far, my package management scheme consists of the setup program and a
directory layout spec.  A full pathname is given, so a package can be
installed from anywhere in the file system, thus not liniting package
managemant to root.

The directory specification is as follows:

[package]  - to top level directory
   |
   |--install/ - what needs to be overmounted (bin and man, usually)
   |     |
   |     |----bin
   |     |
   |     |----man
   |     |     |
   |     |     -manX  (eg man1, man2 etc)
   |     |
   |     |----lib  (if this is a library)
   |     |
   |     -----include (if this is a library)
   |
   |
   |--distrib
   |     |
   |     ---src --all source code to the package
   |     |
   |     ---nosrc -- enough stuff (include makefile) to install
   |                 package without full source.
   |
   ---[other stuff] -- runtime support, docs, etc.  Not needed to be
                       accessable by user, but by the package itself.
                       Documentation (beyond man pages) also belongs
                       here.

The src and nosrc directory have a Makefile, for which make install
put the binaries and manpage in the install directory.

When a package is setup, the install directory is "overmounted" (with
links) on  ~/.setup.  To utilize this, the user must add ~/.setup/man
to MANPATH, and ~/.setup/bin to PATH. 

Please give me feedback.  I would post the (simple) setup script, buts
it's at home.  If people request it i'll send it either to them, or
the net.  But what does the c.o.l community feel about this idea.

-- 

-joe      (jfritz@rdrc.rpi.edu)
Newsgroups: comp.os.linux