I've recently had reason to source upgrade a FreeBSD box from version 6.4 to 8.0. The safest way to do this is by upgrading first to version 7.2. Here are some basic instructions -- they're a bit abbreviated because I had the luxury of removing all installed packages on the machine and upgrading just the base OS, then reinstalling packages. I will soon be upgrading a production machine, and will either update this post or create a new one when I'm doing live port upgrades.
Here's what I did.
- As noted above, I had the luxury of removing all packages, so first thing I did was remove them.
- Update /usr/src to RELENG_7_2 -- I used csup, which is part of the base OS
- In /usr/src, run
make buildworld; make buildkernel-- in my case I have a custom kernel configuration, so I run buildkernel with the additional flag
- Once built, install the kernel and OS --
make installkernel ; make installworld-- again, in my case I added the
mergemaster, which upgrades all configuration files -- be careful if you have any customized files, consult the documentation
- If you can, in /usr/src run
make check-oldand then
make delete-old-- this removes all obsoleted files from the old version of the OS, don't do it until later if you have old packages still installed that depend on those files
- Make sure your ports tree is updated -- see portsnap
- Reinstall the following packages and dependencies: sudo, ruby, portupgrade
- If you are incautious, run
portupgrade -af-- if more cautious, upgrade each package in turn and test
- Reboot and test
- Repeat every step above after upgrading /usr/src to RELENG_8_0
Update: one thing I forgot earlier, the -F flag to mergemaster is very useful, it automatically updates any files where only the VCS Id tag is different, which saves a lot of mindless approving of files.