mergemaster – a great tool when upgrading
mergemaster is a tool which can greatly ease the reconciliation/merge of your
old and new /etc directory. This merge is a frequently performed step of
the upgrade process. Once you’ve done that by hand and then used mergemaster,
you’ll never do it manually again.
From man mergemaster:
mergemaster is a Bourne shell script which is designed to aid you in
updating the various configuration and other files associated with
FreeBSD. It is HIGHLY recommended that you back up your /etc directory
before beginning this process.
Installing mergemaster
When I wrote this article, mergemaster was not in the base system. To
check whether or not it’s already in your system, try the following command:
# which mergemaster
/usr/sbin/mergemaster
If you get an answer, then you don’t have to install mergemaster and should
skip to the part about running mergemaster.
Here’s how I installed mergemaster. Remember, I already had the entire ports tree installed. You may have to refer to the FreeBSD Handbook to see how to install a port.
[root@ns:/usr/home] # cd /usr/ports/sysutils/mergemaster/ [root@ns:/usr/ports/sysutils/mergemaster] # make >> mergemaster-1.17.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://ftp1.dal.net/dalnet/FreeBSD/. Receiving mergemaster-1.17.tar.gz (7095 bytes): 100% 7095 bytes transfered in 2.0 seconds (3.41 Kbytes/s) ===> Extracting for mergemaster-1.17 >> Checksum OK for mergemaster-1.17.tar.gz. ===> Patching for mergemaster-1.17 ===> Configuring for mergemaster-1.17 [root@ns:/usr/ports/sysutils/mergemaster] # make install ===> Installing for mergemaster-1.17 install -c -o root -g wheel -m 555 /usr/ports/sysutils/mergemaster/work/mergemaster /usr/local/sbin/mergemaster install -c -o root -g wheel -m 444 /usr/ports/sysutils/mergemaster/work/mergemaster.8 /usr/local/man/man8 ===> Generating temporary packing list ===> Compressing manual pages for mergemaster-1.17 ===> Registering installation for mergemaster-1.17
Running mergemaster
After looking at man mergemaster, I decided to run it with the following
command:
# /usr/local/sbin/mergemaster -svd -w120
I just followed the instructions. Be careful about merging binary files. I
did that and it messed up my screen. I had to logout and restart my telnet session
to clear it. And when I restarted mergemaster, here’s the line I used:
/usr/local/sbin/mergemaster -rdsv -w 120 -t /var/tmp/temproot.0304.18.54
The actual directory will be dependant upon the date and time you ran mergemaster.
At the end of the process, all files will have been merged and whatever is left in.
Another thing I did during this process was change my default editor. For
some reason, it was vi and I prefer ee.