使用 Mac 开发的同学应该都知道 HomeBrew
这个软件,如果还不知道,那么我推荐你试试。
HomeBrew
是一款用于 macOS 的开源的软件包管理器,它的作用就好比 Ubuntu 的 apt-get
或者 CentOS 的 yum
。
虽然有了 HomeBrew
之后,在 mac 上安装软件包方便了很多,但在使用时有时候也会有一些困扰,本文记录了笔者在使用中遇到问题后找到了一些小技巧,大大优化了使用体验,分享给大家。
1.更新源
相信很多国内的朋友在使用 HomeBrew
的命令 brew install xxx
安装软件包的时候,一定会遇到命令长时间卡在 brew update
这一条上。是的,由于一些奇怪的网络问题等原因,brew
的源更新非常慢,一般的做法是Ctrl + C
中止掉这一步的执行,brew
会接着执行后面的软件包安装操作。但长此以往并不是根本解决之道。
一次偶然的机会,让我发现了 TUNA
这个牛P的组织以及他们的 清华大学开源软件镜像站
- mirrors.tuna.tsinghua.edu.cn。这个镜像站中有非常多的知名开源软件的镜像,HomeBrew
自然在列。
于是,我们要做的就是替换 HomeBrew
原来的软件源为清华的镜像源。
进入自己 mac 的 HomeBrew
安装目录(一般在 /usr/local/HomeBrew
),这是一个 git
库,通过 git remote -v
可以看到,其原来的软件源在 https://github.com/Homebrew/homebrew
,我们需要替换为清华的镜像源。
cd /usr/local/HomeBrew
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
cd /usr/local/HomeBrew/Library/Taps/homebrew/homebrew-core
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
brew update
接下来,请自行感受飞一般的 brew update
!
替换操作步骤参照清华镜像站的关于 HomeBrew 的使用说明(https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/)
2.可视化软件
使用命令brew
的方式操作HomeBrew
安装软件包自然是非常方便而且强大,但是可能有人并不喜欢,他更希望像 App Store 一样,有一个直观的界面,点点点就好。那么,你可以使用 Cakebrew (https://www.cakebrew.com/) 这款软件。
界面如下:
安装、搜索、卸载、更新,一键搞定。
3.安装指定版本
HomeBrew
安装软件包的时候,默认安装最新版本,但是对于开发者来说,一个版本往往是不够的。
仔细翻找了brew
相关的命令,发现并没有与指定版本安装相关的操作,但是如果你安装了某个软件包的不同版本,却是可以查询以及切换的。看来只能找非常规路子了。
观察brew install
命令的输出信息可知,当安装某个软件包时,它会首先从brew
版本库中找到对应软件的*.rb
的安装脚本并下载下来。比如go
的话,会先下载https://github.com/Homebrew/homebrew-core/blob/master/Formula/go.rb
,在 github 查看这个脚本可知,它的作用是告诉brew
从哪儿下载哪个版本的go
软件包。
所以我们要安装某个指定版本的软件包,就需要让 HomeBrew
用我们制定了版本的.rb
脚本去做安装。
基于这个思路,我们尝试在 github 版本的历史中,找到软件包的某个版本的 .rb
脚本,记录其地址。比如我现在需要 go 的 1.11.2 版本,我找到其.rb
脚本在https://raw.githubusercontent.com/Homebrew/homebrew-core/20860a2a6e7ed6de93a9d324d6c86d3b33b871a7/Formula/go.rb
。然后我们通过:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/20860a2a6e7ed6de93a9d324d6c86d3b33b871a7/Formula/go.rb
成功实现对 1.11.2
这个版本的 go
软件包的安装。
➜ ~ brew list go
/usr/local/Cellar/go/1.11.2/bin/go
/usr/local/Cellar/go/1.11.2/bin/godoc
/usr/local/Cellar/go/1.11.2/bin/gofmt
/usr/local/Cellar/go/1.11.2/libexec/api/ (15 files)
/usr/local/Cellar/go/1.11.2/libexec/bin/ (3 files)
/usr/local/Cellar/go/1.11.2/libexec/doc/ (152 files)
/usr/local/Cellar/go/1.11.2/libexec/lib/ (3 files)
/usr/local/Cellar/go/1.11.2/libexec/misc/ (394 files)
/usr/local/Cellar/go/1.11.2/libexec/pkg/ (1136 files)
/usr/local/Cellar/go/1.11.2/libexec/src/ (5657 files)
/usr/local/Cellar/go/1.11.2/libexec/test/ (1908 files)
/usr/local/Cellar/go/1.11.2/libexec/ (6 files)
➜ ~ brew list go --versions
go 1.12 1.11.2
4.切换不同版本
当通过 HomeBrew
安装了某个软件包的多个版本时,需要切换不同版本怎么做呢?
➜ ~ brew help switch
Usage: brew switch formula version
Symlink all of the specific version of formula's install to Homebrew prefix.
-v, --verbose Make some output more verbose.
-d, --debug Display any debugging information.
-h, --help Show this message.
还是以go
为例:
➜ ~ brew switch go 1.12
Cleaning /usr/local/Cellar/go/1.12
Cleaning /usr/local/Cellar/go/1.11.2
3 links created for /usr/local/Cellar/go/1.12
➜ ~ go version
go version go1.12 darwin/amd64