Homebrew 下载软件的指定版本
使用 Homebrew 安装软件真的是非常方便,但有的时候,我们对软件版本有要求,需要安装「特定版本」的软件,这篇博文就是解决「Homebrew 下载软件的指定版本」的问题。
认识 Homebrew 的 formula
Homebrew 中的每个软件包都是通过一个 formula.rb 文件来配置软件的源代码URL、依赖、编译规则和选项,例如以下是 Hugo 的formula文件:
|
|
这是一个 ruby 文件,我们可能不懂 ruby,不过无所谓:
desc
和homepage
都是描述性信息,不对软件安装产生什么影响。url
是软件源代码的位置,编译安装时从此位置将源代码下载下来。sha256
是源代码包的校验码,这是保证下载下来的包不被篡改。bottle
记录了各版本 macOS 下预编译的二进制包的校验码,这部分内容是 Homebrew 的自动集成工具自动维护的,我们并不需要编辑修改。
更改上面的url
和sha256
,即可将formula的配置更新到任意版本。编辑好后,使用brew install或者brew upgrade进行安装或者更新升级。
下载指定版本
步骤一:前往homebrew-core/Formula · Homebrew 官方仓库,找到你要下载的文件,比如 Hugo:
步骤二:点击https://github.com/Homebrew/homebrew-core/blob/master/Formula/hugo.rb,前往 History 寻找历史版本:
步骤三:找到想要的版本,替换url
和sha256
到本地 formula 文件:
使用brew edit hugo
即可编辑本地 formula 文件,之后brew install hugo
就下载到对应版本的文件啦~
自己动手制作 formula.rb 文件
这部分以更新gdal
到2.3.0版本为例,来说明手动更新 formula 的步骤。(由于版本随时间变化,大家以理解为主)
编辑配置
使用brew edit gdal
即可打开gdal.rb
开始编辑,我们将url
更新为2.3.0版本的源代码链接:
|
|
理论上我们还需要更新sha256
,使它和url
相匹配。但是sha256
需要我们使用工具计算或者从发布网站上找,不是很方便。我们可以通过下一步的安装调试,来自动计算sha256
。
安装调试
使用brew install gdal --verbose --debug --build-from-source
来安装调试 gdal 的 formula。
brew upgrade gdal --verbose --debug --build-from-source
命令解读:
--verbose
表示显示详细输出,便于调试;--debug
打开调试;--build-from-source
强制从源代码编译。
由于在上一步我们并没有修改sha256
,所以在安装过程中,会报sha256校验码
不匹配的警告,并打印出url
所指向的源代码包的sha256校验值
。
这时我们拿到了正确的sha256
校验值,重新使用brew edit gdal
打开并编辑 formula 文件,将sha256
更改为正确的校验值。
最后,再安装调试,经过漫长的编译,成功地安装上了gdal的最新版本。(使用源代码编译,很耗时)
测试
测试包括对「软件包」的测试和对「formula文件」的测试。
使用brew test gdal
可以测试 gdal 的功能是否正常,
使用brew audit --strict gdal
测试 formula 文件是否正确。
推送更新
通过上述步骤,我们完成了 gdal 的手动更新,如果将更新推送到 Homebrew 的线上库中,那么其他人就可以方便地更新到最新版本。此外,推送到线上库后,homebrew的自动集成工具会自动地编译生成二进制包,这样就不需要从源代码编译那么耗时了,可谓是利人利己。
由于homebrew是在GitHub上协作的,所以更新一个formula就和发一个Pull request是一样的,基本步骤如下:
- 使用
cd $(brew --repository homebrew/homebrew-core)
切换到本地的 homebrew-core 目录; - 使用
git commit
提交自己的修改; - 把
https://github.com/Homebrew/homebrew-core
fork 一份; - 使用
git remote add
命令添加自己的 fork 的 homebrew-core 库; - 使用
git push
推送将本地提交推送到自己的 fork 的 homebrew-core 库中; - 在 GitHub 网页上发起 Pull request。
一键更新
上面一步步完成了编辑配置、安装调试、测试、推送更新,操作起来有些繁琐。但其实homebrew还提供了一个工具,能够一键完成上面4个步骤,命令如下:
|
|
brew bump-formula-pr 可以自动修改 formula 配置文件、检查文件错误、提交并推送更新,其中提交并推送更新的过程需要使用 hub 来在终端上操作 GitHub,可以使用brew install hub
来安装这个工具。
更多超好用的命名行工具教程:各种超好用的命名行工具 - 腐蚀脚本
转载声明:本文允许转载,原文链接:Homebrew 下载软件的指定版本 - 腐蚀脚本
参考: