Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install older formula using Brew?

Using the case of installing Python 2.7.9 instead of the latest 2.7.10, previously I could simply use brew versions python and see all of the versions of Python formulae by their commit SHA in brew, and then check them out to install a specific version. This is an example of brew versions python output:

$ brew versions python
Warning: brew-versions is unsupported and will be removed soon.
You should use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
2.7.9    git checkout 667284f /usr/local/Library/Formula/python.rb
2.7.8    git checkout f26ca5c /usr/local/Library/Formula/python.rb
2.7.7    git checkout d48206e /usr/local/Library/Formula/python.rb
2.7.6    git checkout 3c64184 /usr/local/Library/Formula/python.rb
2.7.5    git checkout a04b443 /usr/local/Library/Formula/python.rb
2.7.3    git checkout 865f763 /usr/local/Library/Formula/python.rb
2.7.4    git checkout 280581d /usr/local/Library/Formula/python.rb
2.7.2    git checkout 97c6869 /usr/local/Library/Formula/python.rb
2.7.1    git checkout 83ed494 /usr/local/Library/Formula/python.rb
2.7      git checkout 1bf3552 /usr/local/Library/Formula/python.rb
2.6.5    git checkout acd49f7 /usr/local/Library/Formula/python.rb
2.6.4    git checkout 843bff9 /usr/local/Library/Formula/python.rb
2.6.3    git checkout 5c6cc64 /usr/local/Library/Formula/python.rb

But the latest version of brew has already removed versions support, and I don't understand how to install a previous Python using https://github.com/Homebrew/homebrew-versions. How do you actually install Python 2.7.9 instead of the newer 2.7.10?

I would like to know how to use homebrew-versions instead of the more trivial way brew versions.

With brew versions I could easily see all versions from that specific formulae (have a look at the above Python versions spit out by brew versions python). From the doc, there is no clear way to achieve the same result as brew versions python does.

like image 679
swdev Avatar asked Sep 21 '15 15:09

swdev


People also ask

How do I install a specific version of Swiftlint?

Unless you need the specific version from any reason other than the error, try brew rm swiftlint && brew install swiftlint . In general, with the new Homebrew, one would install a specific version by doing brew install swiftlint@version, so would be brew install [email protected].

What does brew extract do?

Extract brewing is the form of brewing used by most new brewers. Extract brewing involves the use of concentrated Malt Extract in the brewing process. The use of malt extract lets the brewer skip the mashing process, and move directly to the boil and fermentation steps.

What is brew tap command?

brew tap adds more repositories to the list of formulae that brew tracks, updates, and installs from. By default, tap assumes that the repositories come from GitHub, but the command isn't limited to any one location.


2 Answers

homebrew-versions used to be the easiest way to do this, but homebrew-versions has been deprecated and is no longer available in the current version of homebrew.

To find what versions are readily available, use the following command:

brew search python

to list out all of the available python packages which would display old versions like python@2 and then you could install them by using:

brew install python@2

Some Alternative Approaches

Switching To Previous Version

If you have already installed the older version of the formula and have not removed it you can simply switch the symlinks to reference it using a brew command.

brew switch python 2.7.9

This command would switch you to version 2.7.9

brew switch python 2.7.10

This would switch you back to version 2.7.10

Formula GitHub History

If you do not still have the older version available on your system there is another method you could try but it is more difficult and almost certainly unsupported by Homebrew so if you end up with issues you may not be able to rely on their help.

https://github.com/Homebrew/homebrew-core/commits/master/Formul/<formula>.rb should take you to the commit history of that formula. For your example of installing python 2.7.9 you would do the following:

  1. Go to https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
  2. Look for the entry with a commit summary of "python 2.7.10"
  3. Find and copy the commit hash of the entry below it (1681e19 in this example)
  4. Input git checkout 1681e19 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/python.rb into the terminal

From this point you would do whatever you would normally do to install the older version of python with the old versions method. This appears to be all the old method was doing.

like image 93
Vincent Cunningham Avatar answered Oct 22 '22 00:10

Vincent Cunningham


Homebrew doesn't support installing formulas from git history, although it's possible. There are no python* formulas in the homebrew-versions tap because I think they would be a lot of work to maintain and don't provide the best possible user experience. pyenv is a great tool that solves a lot of the problems associated with keeping multiple pythons around. There's also a user-maintained tap with older Python versions; you could contribute a 2.7.9 formula there.

like image 4
Tim Smith Avatar answered Oct 21 '22 22:10

Tim Smith