Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Aug 1996 14:14:57 -0400 (EDT)
From:      Chuck Robey <chuckr@glue.umd.edu>
To:        Ernest Hua <hua@chromatic.com>
Cc:        kientzle@netcom.com, freebsd-ports@freebsd.org
Subject:   Re: Linux async vs. FreeBSD sync (fwd) 
Message-ID:  <Pine.OSF.3.95.960828141203.23206Q-100000@thurston.eng.umd.edu>
In-Reply-To: <199608281747.KAA01233@server1.chromatic.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 28 Aug 1996, Ernest Hua wrote:

> 
> I've been using a private scheme doing precisely the same thing
> (each application version to its own directory).  This has the
> enormous advantage of being able to upgrade/downgrade a single
> application in a snap.
> 
> My own scheme is a bit klunky, and I would prefer some more
> fully-automated methods.  The issue I ran into is:
> 
>     Transparent installation.  Many programs are not quite as
>     automatically configurable as GNU and company.  Therefore,
>     manual patching of path names (installation and execution)
>     are necessary.
> 
> Ideally, every program to be installed will truly believe they
> are being installed in /usr/local, but will actually be copied
> somewhere else, but with proper symbolic links to make it look
> just like it was in /usr/local.
> 
> A full database of files installed (per application version)
> would be built (automatically, probably by faking out programs
> such as cp and install) to allow arbitrary removal/upgrade/downgrade
> of any version of any application.

I don't understand completely why you'd do this.  If you want ispell in
/usr/local/app/ispell/bin, then do the ports make as:
make PREFIX=/usr/local/app/ispell
and it would install there, unless it was an X11 application.  The X11
apps will probably do that too in a little while (watch this space!)

Of course, your path statement would look like hell.

> 
> Ern
> 
> > An alternative package system that I've been using successfully for several
> > months now is to install _every_ application in it's own private directory,
> > and then populate /usr/local/{lib,bin,include,man} with appropriate
> > symlinks.  For example, I have "ispell" installed in /usr/local/app/ispell
> > as follows:
> > 
> > /usr/local/app/ispell/bin - public executables
> > /usr/local/app/ispell/lib - public lib file
> > /usr/local/app/ispell/man/man? - Man pages
> > 
> > I've then cobbled a quick Perl script that destroys and then
> > re-builds the following directories:
> > 
> > /usr/local/man/man? - links to /usr/local/app/*/man/man?/*
> > /usr/local/lib - links to /usr/local/app/*/lib/*
> > /usr/local/include - links to /usr/local/app/*/include/*
> > /usr/local/links/bin - links to /usr/local/app/*/bin/*
> > 
> > (I chose /usr/local/links/bin rather than /usr/local/bin to avoid
> > some transition headaches.)
> > 
> > The big advantage of this scheme over the current FreeBSD package
> > scheme is that it's very easy to add a new port to this system,
> > since you don't have to track down every file and enter it into
> > some database.  Similarly, removing packages is equally simple: just
> > delete the package directory and rebuild the link directories.
> > 
> > Currently, this doesn't handle package dependencies, and has some other
> > weaknesses, but I think it has serious advantages over the current system.
> > In particular, it easily handles new programs and ports as well as
> > existing packages.
> 
> 
> 

----------------------------+-----------------------------------------------
Chuck Robey                 | Interests include any kind of voice or data 
chuckr@eng.umd.edu          | communications topic, C programming, and Unix.
9120 Edmonston Ct #302      |
Greenbelt, MD 20770         | I run Journey2 and n3lxx, both FreeBSD
(301) 220-2114              | version 2.2 current -- and great FUN!
----------------------------+-----------------------------------------------




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.OSF.3.95.960828141203.23206Q-100000>