Create a gist now

Instantly share code, notes, and snippets.

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

Thanks :-)

@Ndpnt
Ndpnt commented Oct 31, 2013

That's so awesome.

@5te
5te commented Jan 15, 2014

Great! Thank you!

@jeremyajohnson

Very helpful!

@eeichinger

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

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