I have had on-and-off contact with FreeBSD for 15 years, but I haven't maintained a FreeBSD system since 4.x. Now I need to install and maintain a couple of 7.x systems; first for development, then an Internet-facing server.

Looking through the FreeBSD Handbook (updating/upgrading) it seems that 'freebsd-update' is the preferred approach to keep the OS up to date, but there are multiple methods for managing the ports tree and installed ports.

The Handbook describes CVSup and Portsnap for keeping the ports tree up to date. What do you recommend, and why (advantages/disadvantages)?

The Handbook also describes Portupgrade, Portmanager and Portmaster for keeping installed ports up to date. What do you recommend, and why?


Just remember - don't touch if it works. So, unless system hasn't got any vulnerabilities, let it be. If it has - update it to the latest release/patchlevel or update port with recursive rebuilding of dependencies.

Of course careful reading of /usr/src/UPDATING and /usr/ports/UPDATING is a MUST.

PS. Tools you'll use are doesn't really matter i think. I prefer:

  • svn for OS source code management
  • portsnap for ports tree
  • portmaster/portupgrade port upgrading

freebsd-update for OS updates

portsnap for ports sync

portupgrade for building from ports

pkg_add -r for grabbing binary packages, usually more reliable, but a little behind building from source using ports

make buildworld/buildkernel/mergemaster for the big version upgrades


Yes, there seems to be lots of different ways and I wrestled with choosing a good one years ago. I like the author of freebsd-update and portsnap. They are dead simple to use and I throw them in a periodic script to run daily/weekly. They do for the most part binary updates. One thing though is that freebsd-update at least only tracks a certain release for so long. For example my file server that I have had for years and years is now not supported anymore. I resort to upgrading via source if I have the time and/or I need to do something that freebsd-update doesn't support.


I use portsnap to keep my ports tree up to date. I use this over cvsup as it appears to be a faster download. I have no evidence to back this up, though

As per SaveTheRbtz, use portaudit and read the output of your cron e-mails

Read /usr/ports/UPDATING prior to updating any ports for any important news

portversion -L = to see any ports that require updating

The handbook does describe the use of pretty much all the tool options available to you, it's really a matter of picking what suits your requirements

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy