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>