brew-安装旧版本
序言
今天为了跑一个古老的C程序,安装了 libwebsockets 。本以为 brew install 是一件很简单的事情,没想到耗费了一个上午的时间,特此记录一下。
初步探索
brew install libwebsockets
运行后,发现安装的是 4.3.2 的版本,本来不关心,但是程序编译时报错,看报错信息时结构体成员找不到。很明显,安装的版本过高导致的,遂找到 4.0.21 的版本想安装。brew search libwebsockets
发现并没有别的版本可供选择。这会,有个选择时下载 libwebsockets 源码,自己编译安装,但是并不想走这条路。哪里有问题就从哪里解决。
直接找到 homebrew 里 libwebsockets.rb,找到其历史版本,运行 brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fd1f75f399384faa19b4951a404f716507b0808c/Formula/libwebsockets.rb
,但是 brew 报错不支持 url 这种方式,提示使用 extract。
又研究了一下 extract,不得要领。去网上搜到这几个真言,如获至宝,自信满满的开始尝试。
1 | # 1. create a new tap |
- 执行
brew tap-new xin.ye/local-https://raw.githubusercontent.com/Homebrew/homebrew-core/fd1f75f399384faa19b4951a404f716507b0808c/Formula/libwebsockets.rb
,报错,尝试几次发现 packageName 是指 libwebsockets,不指当前计划安装的地址。执行brew tap-new xy/local-libwebsockets
成功 - 执行
brew extract --version=4.0.21 https://raw.githubusercontent.com/Homebrew/homebrew-core/fd1f75f399384faa19b4951a404f716507b0808c/Formula/libwebsockets.rb xy/local-libwebsockets
出现错误,报错信息里还把填的地址都转成小写,让我一度以为是我地址有问题,找了一圈。最后幡然醒悟,它打印的日志 Searching repository history 是不是代表回去历史记录里查,不需要我输入具体地址。执行brew extract --version=4.0.21 libwebsockets xy/local-libwebsockets
成功。 - 执行
brew install [email protected]
成功。
结论
brew extract 会自动去查找 gtihub 安装模块的历史版本,所以其实你不需要关心历史版本的 url 地址,只要知道版本号即可。
一开始被历史版本的 url 地址误导的有点深。特此记录一下。