freebsd-update from 8.3-RELEASE to 9.0-RELEASE: How to deal with dozens of diffs?

Solution 1:

I wasn't getting much response here, so I asked at forums.freebsd.org.

The short answer is: No. There is no easy way to merge these changes using freebsd-update. freebsd-update uses merge(1) to perform the diffs and merging, and merge is not very friendly or flexible.

There are other options, such as sysutils/etcupdate as suggested by kworr. However, I don't see how that can be integrated with freebsd-update.

From what I read, freebsd-update is a convenient way to upgrade FreeBSD, but it fails in other ways. Many FreeBSD admins don't use freebsd-update at all, and prefer the manual way using using the source and mergemaster(8).

Solution 2:

I would agree that in many cases, the older way will give less trouble; that is, if you're upgrading from a non-RELEASE "branch", major version upgrades, etc.

But freebsd-update is "da schiz" for keeping a RELEASE-branch system current with security patches (or, in other words, a production machine/server).

Anytime you update from something more than a few months old there are likely some changes to files in /etc --- the older way uses "mergemaster", which is slightly more friendly that merge, but updating merges to /etc/ files that have been modified is always going to be a PITA that requires a good bit of manual intervention. It's just that mergemaster is a tad (only a tad) more "user-friendly".