brew 安装历史版本软件


背景

笔者在编译安装一个包时遇到编译失败,发现是一个依赖软件的版本过高导致,因为依赖的软件是通过 brew 安装,于是查找了一些资料解决了通过 brew 安装软件历史版本的问题。

解决

如果,软件有提供对应版本,则可以直接通过安装对应版本名称进行安装:

# 如搜索 node 
$ brew search node
==> Formulae
libbitcoin-node          node-build               node@12                  nodeenv
llnode                   node-sass                node_exporter            nodenv
node                     node@10                  nodebrew
==> Casks
nodebox                                           nodeclipse
# 如需要安装 node 10
$ ~ brew install node@10

笔者所需要安装的 libplist 2.0.0 版本,并没有提供对应的版本,搜索出默认是最新的 2.2.0 版本

$ brew search libplist
==> Formulae
libplist ?

所以只能通过以下的方法来解决。

1、列出软件信息,找到 rb 安装文件

要看的是 From 这里的安装文件,因为笔者用的是国内中科大的镜像源,这个地址不能直接打开,所以需要在 Github 上找到 Homebrew 的源的这个地址;(如果是其他源的 http 地址,查找到方式一样,举一反三)

根据地址的规则,笔者要在 Github 打开的 url 是

https://github.com/Homebrew/homebrew-core/blob/master/Formula/libplist.rb

打开这个 url 便能看到 libplist 的安装信息了。

2、找到历史版本的 rb 文件进行安装
把这个库克隆下来,并找出 libplist 的提交记录

# 克隆本机的 homebrew 源即可
$ git clone git://mirrors.ustc.edu.cn/homebrew-core.git
$ cd homebrew-core
$ git log master -- Formula/libplist.rb

因为笔者要安装的是 2.0.0 版本,所以需要找到这个版本的提交信息。

根据 commit 信息,在 Github 中根据 url 找到这个版本的 rb 文件地址为

https://github.com/Homebrew/homebrew-core/blob/4891fbc1977d69a016f6602f9f7526b3458141b1/Formula/libplist.rb

确实是 2.0.0 的版本了
3、brew 安装此旧版本

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/4891fbc1977d69a016f6602f9f7526b3458141b1/Formula/libplist.rb

后记

安装完旧版本的依赖之后,编译工作得以继续执行了。