背景
筆者在編譯安裝一個包時遇到編譯失敗,發現是一個依賴軟件的版本過高導致,因為依賴的軟件是通過 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
后記
安裝完舊版本的依賴之后,編譯工作得以繼續執行了。