0%

Homebrew 使用简介

环境变量

系统在加载 ~/.zshrc(macOS Catalina 之前是 ~/.bash_profile)之前还会加载:

  • /etc/profile
  • /etc/paths(系统默认指定的一系列 PATH

使用命令 vi /etc/paths 查看,内容如下:

1
2
3
4
5
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

输入 echo $PATH 可以查看当前的 PATH,会显示 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin(最后一个暂不知从哪里加载),可以看到,系统默认就是按照这样的顺序依次从这几个目录中读取的,也就是说,/usr/local/bin 目前是系统最优先读取的路径。

如果在 ~/.zshrc 设置就会优先从该文件的 PATH 加载,因为 ~/.zshrc 是后被系统加载的。

Homebrew 原理

macOS 自带的软件默认是放在 /usr/bin 路径下的,如在该目录可以找到系统自带的 gitgem 等。而 /usr/bin 路径在系统的读取顺序上是低于 /usr/local/bin 路径的。

Homebrew 就是利用了系统更优先读取 /usr/local/bin 的特点,先把包安装到同路径的 Cellar 文件夹下,然后使用软链接的方式,在 bin 文件夹下创建软链接,这样系统就可以优先找到 brew 安装的包了。

Homebrew 安装

安装 Homebrew

1
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

它是使用系统自带的 ruby 进行安装的。

使用 brew 去可以安装 pythongitjava 等等。虽然系统都默认提供了这些,但是版本往往不是最新的,我们也不建议使用 sudo 去更新修改系统的内容。于是完全可以使用 brew 去重新安装维护一套,更新也更方便更安全。这样基本就可以不再使用系统默认提供的一些包了。

安装某些软件时候,处于避免冲突的考虑,brew 不会自动在 /usr/local/bin/ 下创建软链接(如 ruby)。解决方法有两种:一是在 ~/.bash_profile 下为新安装的添加环境变量;二是手动在 /usr/local/bin/ 下创建软链接(推荐),如输入命令 ln -s /usr/local/Cellar/ruby/2.6.3/bin/ruby /usr/local/bin/ruby,就可以把已经使用 brew 安装好的 ruby/usr/local/bin/ 下创建软链接。

Homebrew 使用

常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ brew list // 安装的软件列表

$ brew install <name> // 安装某个包

$ brew uninstall <name> // 卸载安装的软件

$ brew update // 更新 Homebrew 本身

$ brew outdated 查看过期软件

$ brew upgrade <formula> // 更新指定软件

$ brew pin <formula> 指定某软件保持在当前版本不被更新

$ brew unpin <formula> 取消某软件保持在当前版本

$ brew --cache 查看 Homebrew 缓存目录

// cask 相关

$ brew cask install <name> // 使用 cask 安装软件

$ brew list --cask // 使用 cask 命令安装的应用列表

$ brew cask uninstall <name> // 卸载使用 cask 命令安装的应用

$ brew cask search <name> // 查找

避免 Homebrew 自动更新:在 ~/.zshrc 文件中写入 export HOMEBREW_NO_AUTO_UPDATE=true

安装 homebrew-cask-upgrade 方便 cask 应用更新:

1
2
3
4
5
$ brew tap buo/cask-upgrade // 安装

$ brew cu -a // 更新所有

$ brew cu <name> -a 更新指定