Date: Tue, 10 Mar 2015 22:06:37 +0000 From: Ben Morrow <ben@morrow.me.uk> To: list-freebsd-stable@jyborn.se, freebsd-stable@freebsd.org Subject: Re: There has to be a better way of merging /etc during a major freebsd-update Message-ID: <20150310220635.GA90305@anubis.morrow.me.uk> In-Reply-To: <20150310191849.GI9442@pol-server.leissner.se> References: <20150310120540.GN8223@pol-server.leissner.se> <CA%2BtpaK2QWN4ez%2BjKViQ0=wVxysvrfN-S9qrumEdpF7wwM-822A@mail.gmail.com> <1d4863fa5d3f1374a9fa5f9bd19d01b7@ultimatedns.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150310220635.GA90305>