Homebrew

2022-03-30

Homebrew 是一款开源的包管理工具,目前支持 [[macOS]][[Linux]],可以快速的安装和更新软件。

安装

Terminal window
1
# 先安装命令行工具
2
xcode-select --install
3
4
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
5
6
# 安装完成后执行,以增加到 zsh 配置文件 .zprofile
7
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile

安装完成后执行以下命令增加到 [[Zsh]] 配置文件 .profile

Terminal window
1
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile

关闭 analytics

默认情况下 Homebrew 会开启分析,可以使用以下命令查看或关闭:

Terminal window
1
# 查看
2
brew analytics state
3
# 关闭 off / 开启 on
4
brew analytics off

升级

升级自身命令:

Terminal window
1
brew update

升级所有 app

Terminal window
1
brew upgrade --cask $(brew list --cask)

使用

命令

  • 安装:brew install <pack>
  • 搜索:brew search <pack>
  • 卸载:brew uninstall <pack>
  • 升级:brew upgrade <pack>
  • 查看已安装:brew list
  • 查询包信息:brew info <pack>
  • 查询包依赖:brew deps <pack>

更新包

Terminal window
1
brew outdated # 列出过时的包
2
brew upgrade neovim # 升级 Vim
3
brew upgrade # 升级所有包

阻止指定包更新

Terminal window
1
brew pin neovim # 阻止 Vim 更新
2
brew unpin neovim # 解除阻止

卸载过时的包

Terminal window
1
brew cleanup -r # 查看所有过时的包
2
brew cleanup neovim # 删除 Vim
3
brew cleanup # 删除所有的包
4
brew brew autoremove # 卸载未使用依赖 -n 参数仅列出

安装 tap 源

Tap 可以将其他第三方软件包添加到 Homebrew 中,比如说要安装字体,则可是使用以下命令:

Terminal window
1
brew tap homebrew/cask-fonts
2
3
# 然后就可以用 search 和 install 进行搜索和安装字体了
4
brew search fira-code
5
# 返回 font-fira-code font-fira-code-nerd-font
6
7
# 安装字体
8
brew install font-fira-code

查看经安装的第三方的软件包:

Terminal window
1
brew tap

在用的 Tap 推荐:

  • tap homebrew/cask-fonts:字体
  • homebrew/cask-drivers:驱动
  • homebrew/services:服务

独立软件或工具:

  • romkatv/powerlevel10k

查看包安装位置

Terminal window
1
# 查看默认包安装路径
2
brew --prefix
3
# 查看指定包安装路径
4
brew --prefix neovim
5
6
# 查看默认 cask 包安装路径
7
brew --caskroom
8
# 查看指定应用安装路径
9
brew --caskroom obsidian

禁用自动更新

在 ~/.zshrc 中增加以下配置

Terminal window
1
export HOMEBREW_NO_AUTO_UPDATE=1

已安装包的版本和最新版本

Terminal window
1
# 列出所有已安装的 cask 应用并检查其信息
2
for c in $(brew list --cask); do
3
# 获取当前安装的版本
4
current=$(brew info --cask $c | grep "^==> $c:" | awk '{print $3}')
5
6
# 获取 Caskroom 目录中最新安装的版本
7
caskroom_version=$(ls -t /opt/homebrew/Caskroom/$c | head -1)
8
9
if [ "$current" != "$caskroom_version" ]; then
10
echo "$c: $caskroom_version -> $current"
11
fi
12
done