Apple’s approach to software updates betrays their consumer-centric view of computing: on a Windows PC, updates can be set to automatically install and in fact your system administrator can take that power off you and install updates whether you like it or not; on the Mac, it’s up to the user to install updates when they want to, and there are no official ways to fully automate this process.
This is all very well, but is a bit of a pain when managing a school-full of Macs, especially when all the remaining PCs happily pull updates off the Windows Software Update Service without anyone lifting a finger. In a bid to keep everything reasonably up to date, I would use Apple Remote Desktop (ARD) to send a UNIX command to run software update every now and again. This worked reasonably well, but required each machine to be unoccupied and for me to keep an eye to check everything was working ok. I also tried setting machines to wake up in the night and then scheduled ARD to send the update command at that time, but this would never quite work properly with machines losing their connection or going to sleep etc.
I then stumbled upon a program called Munki, which describes itself as ‘Managed software installation for OSX’. It’s a pretty powerful bit of software, but with quite a steep learning curve and no friendly GUI to get things going. However, after a bit of reading of the help files I realised that it could quite easily be set up to automatically install software updates whenever the Mac was idle at the login screen. Here’s how (using a Mac OSX Server to manage preferences):
- Install the Munki package on a Mac.
- Open Workgroup Manager and then add a managed preference, using the ‘Managed Software Update’ application to provide an MCX .plist manifest.
- Add the following keys:
- AppleSoftwareUpdatesOnly = true
- InstallAppleSoftwareUpdates = true
- SoftwareUpdateServerURL = your own Apple Software Update Server or just leave blank to use Apple’s
- SuppressUserNotification = true
Tada, it should work!
Unfortunately for me it didn’t, not straightaway. It turned out that I was having problems with our Software Update on our Mac server because the DNS wasn’t sorted correctly. A useful tool in terminal is ‘changeip’ for that…
But it all seems to be working now. Hurrah.