HomeBrew 安装特定版本的 Formula
文章目录
在 Mac 上 brew 作为常用的包管理软件,一直被我使用。
一般来说,使用 brew 都会安装最新版本的软件,有时候需要安装特定版本的软件的时候,我都会考虑使用 Docker 实现。
不过也有偷懒的时候,brew 也确实是方便,所以考虑一下怎么使用 brew 安装特定版本、本机安装多版本的 Formula
brew 安装 Formula 简单原理介绍
1 | brew tap-info homebrew/core |
可以看到,整个就是一个 github repo
具体的每个 formula 在目录 https://github.com/Homebrew/homebrew-core/tree/master/Formula
如果软件作者希望 formula 被添加或者被更新,都给这个 repo 提 PR 即可
1 | $ brew install grafana |
安装 grafana 会依赖本地的 grafana.rb 文件,根据文件内容下载 url 的压缩包,然后校验 sha256
安装一个老版本的 Formula
知道了基本原理,只要把 *.rb 文件恢复到以前的某个特定版本,就可以直接 brew install 了
可以通过 git log 查看
1 | $ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula |
可以直接查看 github page history
https://github.com/Homebrew/homebrew-core/commits/master/Formula/grafana.rb
恢复到特定版本即可
安装多版本
上面的方法可以安装一个 formula 的某个特定版本,但是不能多版本同时安装
创建本地的 formula 文件
1 | # Create a local tap for storing the formula |
会在 /usr/local/Homebrew/Library/Taps/
生成一个模板文件
创建特定版本的副本
1 | $ brew extract --version=8.4.2 grafana $USER/local-grafana |
安装特定版本
1 | $ brew search grafana |
运行
有些软件,可以起一个 server ,有些就只是一个 lib ,安装 grafana 可以起 server
1 | $ brew services list // 查看 |
问题 - 配置文件内容是否共用了
以我安装的 grafana 举例,最新版本是 v9,上面我安装了 v8.4 ,我都安装了,已经可以切换运行了
但是可以查看具体的 .rb 文件,里面其实已经写好了一些 conf 的路径,/usr/local/var/lib/grafana
,这就导致了不管是运行 v9 还是 v8 都使用的是同一份配置,运行就会有问题。
可以修改具体的 local grafana 文件的内容,指定额外的 conf 地址,避免冲突。
安装不同的软件,设置是不一样的,具体问题具体分析了。
说明
理论上,通过上面的方法,可以安装任何版本。
实际上,几个月前甚至更久的版本,其实还是会安装失败,因为安装一个软件有很多依赖的过程,其他的依赖可能已经不在维护了,找不到源了。
参考
原文作者: dryyun
原文链接: https://dryyun.com/2022/07/05/brew-install-old-version-formula/
发布日期: 2022-07-05 23:23
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议