Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Install a previous version of a formula with Homebrew
#!/bin/bash
#
# Installs the previous version of a Homebrew formula
#
# Usage: brewv formula_name desired_version
#
# Based on http://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula#9832084
#
# Author: Matti Schneider <hi@mattischneider.fr> (http://mattischneider.fr)
versions=$(brew versions $1)
result=$(echo "$versions" | grep -m 1 $2) #-m 1 to stop as soon as possible
if [[ $? = 0 ]]
then
commit=$(echo $result | cut -d ' ' -f 4)
formula=$(echo $result | cut -d ' ' -f 5)
cd /usr/local
if [[ -e $formula ]]
then brew unlink $1 # will fail if not already installed, hence the check above
fi
git checkout $commit $formula &&
brew install $1 &&
git reset HEAD $formula &&
git checkout -- $formula
cd - > /dev/null
echo "$1 $2 installed."
echo "You can now switch versions with 'brew switch $1 <version>'"
else
echo "$versions"
echo
echo "No version matching '$2' for '$1'"
echo "Available versions have been printed above"
exit 1
fi
@kaspergrubbe

This comment has been minimized.

Show comment Hide comment
@kaspergrubbe

kaspergrubbe Oct 28, 2013

Thanks :-)

Thanks :-)

@Ndpnt

This comment has been minimized.

Show comment Hide comment
@Ndpnt

Ndpnt Oct 31, 2013

That's so awesome.

Ndpnt commented Oct 31, 2013

That's so awesome.

@5te

This comment has been minimized.

Show comment Hide comment
@5te

5te Jan 15, 2014

Great! Thank you!

5te commented Jan 15, 2014

Great! Thank you!

@jeremyajohnson

This comment has been minimized.

Show comment Hide comment
@jeremyajohnson

jeremyajohnson Apr 17, 2014

Very helpful!

Very helpful!

@eeichinger

This comment has been minimized.

Show comment Hide comment
@eeichinger

eeichinger Nov 15, 2014

finally - tx!

Note

as of Oct 2014 "brew versions" is no longer part of homebrew. You need to tap homebrew/boneyard before being able to use the script above:

brew tap homebrew/boneyard  

this puts the command "brew versions" back in your tool set

finally - tx!

Note

as of Oct 2014 "brew versions" is no longer part of homebrew. You need to tap homebrew/boneyard before being able to use the script above:

brew tap homebrew/boneyard  

this puts the command "brew versions" back in your tool set

@benlk

This comment has been minimized.

Show comment Hide comment
@benlk

benlk May 31, 2017

As of Brew version 1.11.12, the boneyard is deprecated: https://github.com/Homebrew/homebrew-boneyard

benlk commented May 31, 2017

As of Brew version 1.11.12, the boneyard is deprecated: https://github.com/Homebrew/homebrew-boneyard

@doekman

This comment has been minimized.

Show comment Hide comment
@doekman

doekman Sep 9, 2017

This all doesn't seem to be working anymore.

What worked for me: run brew info python3 to see what other versions of python3 have been installed (3.5.2_3 was listed), and then brew switch python3 3.5.2_3 to switch to the old version, and brew pin python3 to prevent upgrading.

Not sure how this works if you've never had older versions installed...

doekman commented Sep 9, 2017

This all doesn't seem to be working anymore.

What worked for me: run brew info python3 to see what other versions of python3 have been installed (3.5.2_3 was listed), and then brew switch python3 3.5.2_3 to switch to the old version, and brew pin python3 to prevent upgrading.

Not sure how this works if you've never had older versions installed...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment