Subject: Re: groff/-current build problems
To: Luke Mewburn <lukem@netbsd.org>
From: Steven M. Bellovin <smb@research.att.com>
List: current-users
Date: 12/08/2002 11:39:11
In message <20021208073750.GS8398@mewburn.net>, Luke Mewburn writes:
>On Sat, Dec 07, 2002 at 11:03:22PM -0500, Steven M. Bellovin wrote:
> | In message <Pine.NEB.4.33.0212071955390.12035-100000@vespasia.home-net.int
>ernet
> | connect.net>, Bill Studenmund writes:
> | >Why not use build.sh to make a release? It will make the sets for you. An
>d
> | >if you do an unpriv'd build, you need to do something to get the
> | >permissions right.
> | >
> |
> | The problem is that installing a release from sets is an annoying
> | process. You have to zap all the things that a full installation
> | needs but you already have (i.e., root's crontab), and take the usual
> | care with /etc. etcupdate is a big step forward, but I'm still not at
> | all satisifed with the ease of upgrading. (Note: this isn't to say
> | that tar-ing DESTDIR on top of the running system is easier -- it's the
> | same set of problems. But I wish there were an easier way to keep
> | -current.)
>
>So don't extract the etc.tgz set then.
Sure -- except that there are lots of other things besides /etc/passwd
and friends in /etc; there's fixed code and new functionality in
/etc/rc.d/*, for example.
>
>I regularly upgrade my systems from "old -current" or "earlier release"
to "-current" or "head of release branch" by running an UNPRIVED
>DESTDIR!=/ build, creating the sets, extracting all sets *except*
>etc.tgz, and then running one of:
>
> a) if sources are available:
> cd /usr/src
> ./etc/postinstall -s `pwd` check
> ./etc/postinstall -s `pwd` fix
Hmm -- 'man postinstall' (on both -current and 1.6) doesn't seem to
work.
>
> b) if no sources available, but I have etc.tgz:
> mkdir /tmp/foo
> cd /tmp/foo
> pax -zrvpe -f /path/to/etc.tgz
> ./etc/postinstall -s `pwd` check
> ./etc/postinstall -s `pwd` fix
> cd /
> rm -rf /tmp/foo
>
>This latter step handles all the "upgrade" issues for me of source
>related stuff. I don't use etcupdate, but I believe it can help with
>some of the other "etc upgrade" related issues...
>
These tools are nice steps forward. Daniel Carosone's rsync
mechanism is an even nicer way. But that's not my point. The point is
that it's too hard, and sometimes needlessly too hard.
First, /etc is a mess. It was good that most executables were moved to
/sbin, a dozen or so years ago. But /etc still has a mix of system
scripts, per-site data, and per-machine data. Worse yet, we don't have
good tools for users to deal with this, *especially* in a multi-machine
setup.
Second, we package releases wrong. etc.tgz perpetuates the confusion
from /etc (and, I might add, /var). The release-dependent files, such
as /etc/rc.d, belong in one place; things like /etc/passwd and
/var/games/rogue.scores belong in another. In fact, those latter --
the null or simple stylized files that need to exist (i.e.,
/etc/daily.conf (we can argue another time if it should be /etc/daily
or /etc/daily.conf that reads in /etc/defaults/daily.conf) should be
generated by tiny shell scripts (most of which would say 'touch file'),
rather than being extracted.
Following from that, there should be conversion tools -- scripts to add
new lines to /etc/passwd, for example, taking care to ensure that
they're only added if needed.
Finally -- and only after that is done -- we should worry about making
life easier for folks who have made their own, personal changes to any
system files. Wouldn't it be nice if, when doing an install, you were
told "you changed /foo/bar" or "you changed /foo/bar/bletch/bazz.c"?
Every time I do a release upgrade, for example, I have to remember to
make a certain tweak to /sys/dev/pci/if_ex_pci.c, or one of my machines
won't be able to talk on the net. Similarly, I have to remember a
ghastly hack to dhcp/common/options or my laptop won't be able to talk
to the dhcp server at many Marriott hotels.
Note that all of these problems apply to folks who don't track
-current. It's probably worse for them -- -current users, at least, do
upgrades frequently enough that they're used to it, and have built
tools and work-arounds....
--Steve Bellovin, http://www.research.att.com/~smb (me)
http://www.wilyhacker.com ("Firewalls" book)