Subject: Re: Package Paths Proposal v2
To: Todd Vierling <tv@pobox.com>
From: Curt Sampson <cjs@cynic.net>
List: tech-pkg
Date: 12/16/1998 09:53:25
On Wed, 16 Dec 1998, Todd Vierling wrote:

> : How do you get the package configuration, score, spool, etc. files out
> : of /var and /etc as the proposal stands now?
> 
> I *don't*.  These should not move regardless of installation location of the
> binaries.  (See v2-edit's note about "NOT in $PREFIX/var...")

Ok. This, to my mind, blows requirement three, since you're now
given no way to separate the stuff the package system installs in
etc and var from the /etc and /var directories, but if you don't
have a problem with this, I don't either.

> People using the existing package system -- and more importantly, existing
> binary pkgs -- have to do Nothing to use the new system; simply adding a
> symlink at /usr/pkg (instead of letting pkg_add create the directory)
> suffices to intermix binaries.  People who don't have to mix don't change a
> thing.

Ok, I see. You just wanted backwards compatability.

> Um, `our' new system reads that the default is not to intermix binaries.

I don't agree with this (though my disagreement is not particularly
strong); I think the novice is much better off with intermixed
binaries. What advantage accrues to a non-developer from not mixing
them?

> : Why not just pkg_delete the system binaries (because you got a
> : PLIST with them when you installed) and pkg_add the new ones?
> 
> Because neither our current system nor the distrib-lists -> pkg proposal in
> the works have that fine of granularity such that you can pkg_delete
> something installed with the system distribution.  So, you move the system
> stuff out of the way so that your pkg installed stuff will not conflict.

I'd say we should add that granularity, then, if we can. I'll live
if it doesn't happen, though, since I don't have time to do the
work myself.

Here are my current thoughts on how to install /etc and /var files:

1. The package, when compiled, always looks in /etc and /var for
the files appropriate to those directories.

2. Packages are set up to place `fresh' or `example' etc and var
files in /usr/pkg/share/examples/<pkgname>/{etc|var}. Nothing is
placed in /etc or /var.

3. For every file in /usr/pkg/share/examples/<pkgname>/etc, pkg_add
checks to see if the file exists in /etc. If not, it copies it
there. If one is there, pkg_add prints a note to say that this file
has possibly been upgraded, and should be checked. pkg_add does
the same for var.

4. pkg_add has an option which does just step 3 for installed
packages. (This is how one installs the /etc and /var stuff on a
machine that's sharing /usr/pkg with other machines.)

5. pkg_delete, when run, does not remove /usr/pkg/share/examples/<pkgname>,
but instead renames it to <pkgname>.old. This is so that one can
diff the files after uninstalling one version and installing a new one.

Does this work for you?

cjs
--
Curt Sampson  <cjs@cynic.net>   604 801 5335   De gustibus, aut bene aut nihil.
The most widely ported operating system in the world: http://www.netbsd.org