Skip to content

How to install an older version of a Homebrew package

Installing an older version of some package using Homebrew can be more complex than you expect

I had this problem: I updated Hugo, which is the CMS I use, and one of the versions that were more recent than the one I used introduced a breaking change.

My homepage didn’t list the blog posts any more. I didn’t have the time to figure out why, so I said “I’ll just roll back”.

Now the question became.. “how?”

First, I uninstalled Hugo:

brew unlink hugo

Then I followed the instructions I found on this post. I had to search for the Hugo package formula https://github.com/Homebrew/homebrew-core/search?utf8=%E2%9C%93&q=hugo&type= then I clicked that file (Formula/hugo.rb), and I pressed the History button to see all the previous versions.

Navigated to the 0.53 version I wanted and I clicked the <> button to see the homebrew-core repository at that point in time. Then I opened the Formula/hugo.rb file, and I clicked Raw to get the direct URL to that file.

I then used it as the argument for brew install. For example:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/5441fa16872c9a56bd5997558df45b808f13285b/Formula/hugo.rb

That’s it.

My next step for solving the problem I had was to uninstall the current version installed, and trying to update one version at a time, so I could isolate the release that introduced the change that was causing me problems.


UPDATE 2024: specifically for Hugo, this didn’t work anymore.

I used npx hugo-extended@0.92.0 serve instead (see https://cyrusyip.org/en/posts/2023/12/20/run-different-hugo-versions/))


→ Here's my latest YouTube video

→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter

JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025

Bootcamp 2025

Join the waiting list