Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Mar 2015 10:19:33 +0100
From:      Peter Olsson <list-freebsd-stable@jyborn.se>
To:        freebsd-stable@freebsd.org
Subject:   Re: There has to be a better way of merging /etc during a major freebsd-update
Message-ID:  <20150311091933.GM9442@pol-server.leissner.se>
In-Reply-To: <20150310220635.GA90305@anubis.morrow.me.uk>
References:  <20150310120540.GN8223@pol-server.leissner.se> <CA%2BtpaK2QWN4ez%2BjKViQ0=wVxysvrfN-S9qrumEdpF7wwM-822A@mail.gmail.com> <1d4863fa5d3f1374a9fa5f9bd19d01b7@ultimatedns.net> <20150310220635.GA90305@anubis.morrow.me.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 10, 2015 at 10:06:37PM +0000, Ben Morrow wrote:
> Quoth Peter Olsson <list-freebsd-stable@jyborn.se>:
> >
> > (But I will try running freebsd-update without merging /etc,
> > and use mergemaster -F instead. Should solve my problem.)
> 
> I'm fairly sure this won't do what you want, and in fact won't work at
> all, unless your /etc is identical to the stock /etc installed from the
> ISO. (Which it isn't, of course.)
> 
> installworld specifically avoids installing the files in /etc; then,
> when you run mergemaster, it installs the new versions of those files
> into a temporary directory and merges them with the existing /etc. 
> 
> freebsd-update works a little differently: because it doesn't have a
> source tree available, it has to fetch the stock versions of the files
> in /etc for the release you're upgrading from, so that it can patch them
> to the new release and then merge the changes into your current /etc. If
> you tell freebsd-update to install /etc without merging it will blindly
> update files you haven't changed (which is probably what you want) but
> (I think) will fail to update the files that you have changed, because
> it uses binary patches which won't apply to your modified versions.
> 
> If you want a rather hackish solution, you could try something like
> this:
> 
>     - Rename /etc to /oldetc.
>     - Find yourself a copy of the stock /etc for the version you are
>       upgrading from. (tar -xpf base.txz --include /etc)
>     - Run freebsd-update with /etc removed from the merge list. This
>       will (should?) give you a stock /etc for the version you are
>       upgrading to.
>     - Rename /etc -> /tmp/etc, /oldetc -> /etc and run mergemaster with
>       -t /tmp.
> 
> Obviously I would script this if I was doing more than one or two
> machines
> 
> Ben

I'm not really clear on what will happen if I remove /etc/ from
MergeChanges in freebsd-update.conf. Will my /etc then be ignored
by freebsd-update, or will my /etc be completely overwritten by
freebsd-update?

Anyway, your hack could be useful to me. There are no more than
about ten files I usually change in /etc, so saving the current
/etc, installing a stock /etc, running freebsd-update and then
running diff -r to sort out my changes could work. But I'm a
little worried about removing my /etc changes from a running server.

Thanks!

Peter Olsson



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150311091933.GM9442>