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>