Solving update problems with softwareupdate

Between them, the App Store app and its preference pane work fairly well most of the time. There are still some oddities – updates which appear then vanish again – but so long as you leave them to get on with it, they’re fairly reliable. When anything does go wrong, though, they don’t provide the tools to deal with it.

If you cancel or ignore an update, for example, it is all too easy to end up losing that forever. In that event, you’ll need to use the command tool softwareupdate. But don’t, whatever you do, trust its man page: it is incomplete and confusing. If you need more information, type
softwareupdate --help
instead.

You’re best off running softwareupdate as an admin user; most of its options require that, and some may even need the elevated privileges of sudo.

Although it has other uses, softwareupdate has three common functions: to list available updates, install them, and clear any that have been marked as ignored. The important additional option for the first two is whether to include system and security updates, which only applies to Sierra and High Sierra, not El Capitan.

The basic command to list available updates is
softwareupdate -l
and in Sierra and High Sierra you can add system and security updates with the --include-config-data option thus
softwareupdate -l --include-config-data
That doesn’t appear to be an option in El Capitan, though.

The basic command to install available updates is
softwareupdate -i
but you’ll probably want to make that more specific. Add an a to the option to specify all appropriate updates
softwareupdate -ia
and, in Sierra and High Sierra (not El Capitan), ensure that system and security updates are included using
softwareupdate -ia --include-config-data

You can also select individual updates to install from the listing obtained using the -l option. Do that with
softwareupdate -i myPackage1.05
to install the update package known as myPackage1.05.

If you have set an update to be ignored and now want to change that, use the command
softwareupdate --reset-ignored
to enable all ignored upates.

Another useful command is that to trigger macOS to perform background checks for system and security updates
sudo softwareupdate --background-critical
which should download and install any that are waiting for you, over the coming ten or twenty minutes.

If any of the above commands fails when you’re logged in as a regular and not admin user, try them from an admin account instead. If that doesn’t do the trick, preface the command with sudo. And if you want fuller details of the other tasks that softwareupdate can perform, check using
softwareupdate --help

Three of these commands are also built into my free app LockRattler, available from Downloads above. That gives you single-click access to the following:
sudo softwareupdate --background-critical (not for El Capitan),
softwareupdate -l --include-config-data, or plain softwareupdate -l for El Capitan,
softwareupdate -ia --include-config-data, or plain softwareupdate -ia for El Capitan.