Tips for Homebrew

更新Homebrew

要获取最新的包的列表,首先得更新Homebrew自己,这可以用brew update办到。

1
brew update

安装包

安装包的命令如下:

1
brew install $FORMULA    # 安装指定的包

可以在Homebrew Formulas搜索你需要安装的包。比如你要安装OpenMesh库,在该网页中输入OpenMesh点击搜索,会得到一个搜索结果,点击进去,可以看到安装命令如下:

1
brew install open-mesh

但通过brew install安装某些包提示找不到,可能已经废弃了,如ann,通过下面命令可以安装,参考这里.

1
brew install brewsci/science/ann

1
2
brew unlink opencv
brew link --force opencv@3

卸载包

1
brew uninstall $FORMULA    # 卸载指定的包

注意卸载一个包不会同时卸载其依赖的包。

更新包

通过下面命令可以查看所有可更新的包

1
brew outdated

然后就可以用brew upgrade去更新了。Homebrew会安装新版本的包,但旧版本仍然会保留。

1
2
brew upgrade             # 更新所有的包
brew upgrade $FORMULA # 更新指定的包

清理旧版本

一般情况下,新版本安装了,旧版本就不需要了。可以用brew cleanup清理旧版本和缓存文件。Homebrew只会清除比当前安装的包更老的版本,所以不用担心有些包没更新但被删了。

1
2
3
brew cleanup             # 清理所有包的旧版本
brew cleanup $FORMULA # 清理指定包的旧版本
brew cleanup -n # 查看可清理的旧版本包,不执行实际操作

锁定包

如果经常更新的话,brew update一次更新所有的包是非常方便的。但有时候会担心自动升级把一些不希望更新的包更新了,这时可用brew pin去锁定这个包,然后brew update就会略过它了。

1
2
brew pin $FORMULA      # 锁定某个包
brew unpin $FORMULA # 取消锁定

查看包信息

brew info可以查看包的相关信息,包括包依赖和相应的命令。

1
2
brew info $FORMULA    # 显示某个包的信息
brew info # 显示安装了包数量,文件数量,和总占用空间

brew deps可以显示包的依赖关系,可以用来查看已安装的包的依赖,然后判断哪些包是可以安全删除的。

1
brew deps --installed --tree # 查看已安装的包的依赖,树形显示

如输出的python依赖如下:

1
2
3
4
5
6
7
python
├── gdbm
├── openssl
├── readline
├── sqlite
│ └── readline
└── xz

查看包列表

1
brew list  # 列出所有安装的包

brew list命令还有一些可选参数[--unbrewed][--versions [--multiple]] [--pinned][formulae]

  • 如果给定[formulae]参数,将列出该包的所安装的文件,如果加上--verbose参数,将进一步列出该包所有子文件夹中的文件。
  • 如果给定--unbrewed,list all files in the Homebrew prefix not installed by Homebrew.
  • 如果给定--versions,显示所有包或者某个包([formulae]参数指定)的版本号,如果进一步给定—multiple参数,将只显示多版本安装的包。
  • 如果给定--pinned参数,将现实所有或者某个包被pin的包。

安装其他仓库的包

一般情况下我们安装的都是主仓库(Homebrew’s master repository)中的包,但有些包可能在其他仓库,如brewsci/sciencehomebrew/core。这时可以通过brew tap命令做到,比如:

1
brew tap brewsci/science

然后你就可以直接用brew install安装brewsci/science中的包:

1
brew install $FORMULA

更新源

如果homebrew在下载或者更新的时候速度超级慢,可以考虑更换homebrew的下载源,速度会大大提升。

中科大源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 替换 Homebrew
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git

# 替换 Homebrew Core
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

# 替换 Homebrew Cask
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

# 替换 Homebrew-bottles
# 对于 bash 用户:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
# 对于 zsh 用户:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

参考LUG@USTC知乎

清华源

1
2
3
4
5
6
7
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

brew update

参考tuna@tsinghua

恢复源

1
2
3
4
5
6
7
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git

git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git

brew update

参考