“To upgrade, or not to upgrade, that is the question.” Though upgrades aren’t usually life and death matters, as my paraphrase of Hamlet’s famous dolorous soliloquy might suggest, I have been known to bang my head on the wall after a botched software patch clobbered my system.

So how should one handle software upgrades to client and server systems used for business (or at home, for that matter)? Should you upgrade everything as soon as the update is available, or wait a bit? There is definitely a right way and a ‘risky way' to handling computer upgrades. Follow on intrepid reader, and let me explain the difference.

The single most important goal in all of computerdom is a stable system built upon the perfect golden image (‘image' here referring to an amalgamation of files, scripts and operating system bits that when booted, create “the computer”, complete with mouse pointer). A stable system requires considerable effort and can take a company hundreds of man-hours of testing to get the recipe right. When Microsoft or Apple release updates to their respective operating systems, the users who immediately apply the updates expect the manufacturer to have worked out all the kinks and it should “just work”. It does, most of the time, but sometimes the software updates don’t work, leaving your computer in a semi-functioning state. What follows is a real life example.

I was in the Apple Store a few years ago and overheard a customer berating the Apple Genius for a faulty OS X upgrade that rendered his iMac incapable of working with his scanner, or doctor’s office software, or perhaps it was a combination of the two (in Apple’s defense it was a new version release, not a minor ‘dot' release). Of course the doctor didn’t have the time to deal with this, which made the problem all the worse. Apparently in addition to having a degree in doctoring, he was also a DIY computer maintainer and explained in some detail to the Apple Genius how he dutifully upgraded all the Macs in his office. What he should have done, or better yet, paid an IT professional (like HL Gray!) to do for him, was to install the upgrade on one Mac and test the applications and workflow before installing the upgrade on all the rest. The same goes for Windows (the question of upgrades is even worse for Windows environments, but I digress).

The good doctor used the "risky way" of performing computer upgrades.

Here is a simple way to test an upgrade for a group of Macs (or a home computer) without breaking the bank:

  1. Buy an external USB drive formatted for a Mac (using the HFS+, Journaled file system).
  2. Attach it to the Mac via USB.
  3. Clone the boot drive from the Mac to the external drive, creating an exact copy of the current work environment.
  4. Select the newly minted USB drive from the Startup Disk preference pane in System Preferences, then press the ‘Restart’ button found in the Startup Disk pane.
  5. The Mac will then boot to the external drive you selected in the previous step.
  6. After the Mac boots to the external USB drive, check to make sure you have actually booted from the external drive by opening "About This Mac" from the Apple menu in the top left, the Startup Disk will be indicated on the panel that pops up. If the computer instead booted from the internal drive, perform step 4 again, being careful to select the external drive with your mouse.
  7. Once you've verified the external drive is the Startup Disk, perform the system upgrade by selecting Software Update from the Apple Menu in the top left of the screen.
  8. Once the update has been installed on the external drive and following a system reboot, test out the environment by going through the entire workflow, including retrieving, saving, and printing data files within your company’s business applications. Use all the applications as if you were entering customer orders, updating patient records, etc.
  9. To go one better, have one person in the office use this test machine for an entire week, this will help ferret out corner cases where the new image may not work. If the test machine proves unreliable, you can simply select System Preferences > Startup Disk and select the original startup disk inside your Mac and boot from it, returning the machine to its original, pre-update, operating environment.

This is the right way of doing upgrades. I use this same method for my personal Macs at home.

I did gloss over one bit that does take a little more work than the one sentence I dedicated to its description belies. Cloning a drive can be done with either of two utilities available for purchase, Super Duper (http://www.shirt-pocket.com/SuperDuper/superduperdescription.html) or Carbon Copy Cloner (http://bombich.com). I have used Carbon Copy Cloner for years and swear by it, I have also heard good things about Super Duper, but don’t have any personal experience with it.

The key here is not to apply system updates to an entire office the second the updates become available. Do your own test installation and while you are performing your tests, let the good people of the interwebs give it a go and report on their findings, if something is amiss it gets reported within a few hours. Even if there aren’t any howls of angst echoing down the wire, your particular environment may not be representative of the majority of users, therefore it falls to you, intrepid reader, or your chosen IT servicing agent, to verify that the upgrade works with your environment... DO NOT SKIP THIS STEP!

Many of the concepts I’ve discussed also apply to Windows systems, but the method is a little different since Microsoft does not officially sanction booting Windows from an external drive.

Updates are extremely important, especially in this day of viruses, zero-day exploits, and malware; without updates we would be overrun with botnets spewing spam and collecting credit card numbers, so please upgrade your computers, just do it the right way and save yourself a lot of grief. In a coming blog I will show you how you can use Apple’s Server.app to control and automate the upgrade process, it is really cool!

Kevin