brew 确实很强大,但是平时装东西都是一个 brew install 就完事了。终于有天遇到了想要安装老版本的应用的时候。比如对于鼠须管输入法,默认升级为新的 0.1.12 版本后,使用了新版本的词库,我这老版本的就不能用了,只能回退过去了。

事实上,在 brew 的文档中已经提供了方法来进行安装,只是一直没有细读,都是谷歌一番照着做。今天才想到来看一下是怎么搞的。

关于 brew 的源

brew 官方默认有 core/cask 两个源。我们可以通过命令来识别这一点:

brew tap
homebrew/cask
homebrew/cask-drivers
homebrew/core

这些源的内容都是放在 $(brew --repo)/Library/Taps/ 下面的。

我们想要查看每一应用的信息时可以使用:

brew edit squirrel

这种形式。

有多个版本可供选择

我们在安装前可以搜索一下看是否有多个版本的情况。

brew search gcc
gcc gcc@4.9 gcc@5 gcc@6 gcc@7 gcc@8 i386-elf-gcc

像这种后面带有 @ 的就可以直接安装不同的版本了。

brew install gcc@4.9

但是有的时候,我们是看不到这种情况的。比如我要装的鼠须管:

==> Formulae
squirrel

==> Casks
squirrel ✔ squirrelsql

有同名的,但我需要安装的后面这个。这个时候我们要装老版本我们怎么搞呢?

通过 pull 的提交来安装

我们通过查看 pull 历史来查找我们需要安装的那个版本。

对于 core 源的在 这里查看

对于 cask 源的在 这里查看

比如我想要安装的是 python 3.7.0 版本:

brew install https://raw.githubusercontent.com/sashkab/homebrew-core/176823eb82ee1b5ce55a91e5e1bf2f50aa674092/Formula/python.rb

回退 rb 文件版本来安装

我们要安装的 squirrel 位于 cask 下面:

cd $(brew --repo)/Library/Taps/homebrew/homebrew-cask/Casks

git log squirrel.rb

将这个文件回退到我们想要的版本,然后 brew install 直接安装就是了。