home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.os.linux
- Path: sparky!uunet!spool.mu.edu!enterpoop.mit.edu!usc!rpi!jfritz
- From: jochen fritz <jfritz@rdrc.rpi.edu>
- Subject: Re: A discipline for packages
- Message-ID: <xc72r-n@rpi.edu>
- Sender: jfritz@ptolemy0.rdrc.rpi.edu
- Nntp-Posting-Host: ptolemy0.rdrc.rpi.edu
- Organization: Rensselaer Polytechnic Institute, Troy, NY
- References: <725686556snx@crynwr.com>
- Date: Mon, 4 Jan 1993 02:46:08 GMT
- Lines: 108
-
- 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)
-