There has to be a better way of merging /etc during a major freebsd-update

Peter Olsson list-freebsd-stable at jyborn.se
Wed Mar 11 09:19:47 UTC 2015


On Tue, Mar 10, 2015 at 10:06:37PM +0000, Ben Morrow wrote:
> Quoth Peter Olsson <list-freebsd-stable at 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


More information about the freebsd-stable mailing list