Created
July 9, 2012 14:05
-
-
Save MattiSG/3076772 to your computer and use it in GitHub Desktop.
Install a previous version of a formula with Homebrew
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
That's so awesome.
Great! Thank you!
Very helpful!
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
As of Brew version 1.11.12, the boneyard is deprecated: https://github.com/Homebrew/homebrew-boneyard
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
Thanks :-)