Homebrew makes it easy to keep packages up to date on Mac OS X, but sometimes upgrades
take a few more steps than a simple
brew update && brew upgrade.
For example, upgrading Postgresql requires you to unload and load the
LaunchAgent to get the binaries to load and start properly after minor upgrades.
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
After a major upgrade (e.g. from
you also need to run pg_upgrade
to keep the internal data storage up to date.
But, unfortunately this is easy to miss because it isn’t shown in the
Here’s how to do it.
$NEWPG are just placeholders for version identifiers.
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres/ /usr/local/var/postgres-$OLDPG
$ initdb /usr/local/var/postgres -E utf8
pg_upgradeto load your data into the new database
$ pg_upgrade -d /usr/local/var/postgres-$OLDPG/ \ -D /usr/local/var/postgres \ -b /usr/local/Cellar/postgresql/$OLDPG/bin \ -B /usr/local/Cellar/postgresql/$NEWPG/bin
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
If you forget this last step, Postgres won’t start running automatically the next time you restart your computer.
This process was confusing when I was just getting started with web development. It’s hard enough to figure out how to write your application, let alone making sure your computer is configured properly. Hope this helps keep you up to date.