背景
在 mac osx 下, 大部分的软件都是使用 homebrew
进行管理的, 可以方便的进行软件的安装,更新,删除等等, 大部分情况下 homebrew 的仓库只会存在一份最新的软件版本, 有时可能也会同时存在多个版本, 比如 python 就会有多个.
在有些情况下我们可能需要安装某些软件的历史版本, 接下来提供几种方式实现.
Homebrew 术语说明
在安装历史版本介绍之前, 先简单介绍一下 Homebrew 的一些名词术语及结构, 以便大家能更好的理解, Homebrew 中文可以翻译成 “家酿”, 所以这个软件是对酒相关的一个抽象. 主要的结构包括:
-
Formula ( 配方 )
-
主要使用 ruby 文件描述的软件信息, 包含软件基本信息, 依赖, 编译等等. 如
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/foo.rb
Tap ( 酒吧 )
-
所有 Formula 或命令的 Git 仓库, 比如:
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
对应https://github.com/Homebrew/homebrew-core
仓库.
我们平时使用brew update
就是使用同步 Tap 对应分支的更新. 使用brew install formula
也是从所有的 tap 中查找formula 安装. Bottle ( 酒瓶 )
-
基于对应操作系统已编译好的二进制包, 可以直接使用, 在 rb 文件中会描述各个版本的二进制. 使用二进制包可以省去自己编译. 如:
qt-4.8.4.catalina.bottle.tar.gz
Cask ( 木酒桶 )
-
用于描述和安装 macOs 原生 app 软件, 使用
brew cask
安装就和使用 dmg 安装到 Applications 一样的效果. Keg ( 小桶 )
-
描述的是一个已安装的软件版本路径, 如:
/usr/local/Cellar/foo/0.1
Cellar ( 酒窖 )
-
所有已安装软件的存储仓库路径, 如:
/usr/local/Cellar