Have you ran into problems after Homebrew upgrade?
If you are a Homebrew user on Mac OS X, you might have faced problems after starting a Homebrew upgrade.
If you could review the upgrade log, you might find what went wrong and which configuration and commands you still need to do to get everything working again.
But what if you could not review the brew upgrade log? disaster?
No… Brew keeps these installation information and instructions in a section called Caveats in each of the installed packages… So the solution here is to look for the Caveat section in the info of each of the installed packages using brew info
like this:
$ brew info postgresql
postgresql: stable 12.1 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/12.1 (3,217 files, 37.7MB) *
Poured from bottle on 2019-11-24 at 19:48:53
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
==> Dependencies
Build: pkg-config ✔
Required: icu4c ✔, krb5 ✘, openssl@1.1 ✔, readline ✔
==> Options
--HEAD
Install HEAD version
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
To have launchd start postgresql now and restart at login:
brew services start postgresql
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
==> Analytics
install: 63,955 (30 days), 214,120 (90 days), 996,250 (365 days)
install-on-request: 59,182 (30 days), 197,774 (90 days), 913,033 (365 days)
build-error: 0 (30 days)
The Caveat section marked by ==> Caveats
contains the information that you are seeking.
Repeating that for all installed packages will take a lot of manual unnecessary work, and you will have to look at tons of text that is not relevant to your use case.
This bash command mentioned on this thread on stackoverflow.com. helps:
$ brew info postgresql | sed '/==> Caveats/,/==>/!d;//d'
brew info postgresql | sed '/==> Caveats/,/==>/!d;//d'
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
To have launchd start postgresql now and restart at login:
brew services start postgresql
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
It simply takes the output of brew info postgresql
and then looks for the ==> Caveat
using the sed
command, truncating all unnecessary additional information.
Now if we combine it with the command brew list
to retrieve the list of packages and passed the result to brew info
like this (16.09.2024: Output format of tools is often subject to refinement and changes. If the command below did not work, please update it according to the needs the current version of brew dictates):
$ brew list | sed '/^==>/d;/^$/d' | while read package; do brew info "$package" | sed '/==> Caveats/,/==>/!d;//d' ; done
Will output all caveat sections of all installed packages if the caveat section existed.
Rafael Garrido created this external brew command to integrate this functionality into homebrew. You can find the source code on github under: https://github.com/rafaelgarrido/homebrew-caveats
To install the tool, either install manually or use brew to tap into the repository using the following commands:
$ brew tap rafaelgarrido/homebrew-caveats
Then the following command to install the homebrew-caveats package
$ brew install homebrew-caveats
Now you can use the tool like this:
$ brew caveats postgresql
That’s it. I hope this short How-To guide help.
Happy fixing.