macOS 使用 Homebrew 管理软件包
安装 Homebrew
安装 CLT for Xcode
确保已安装 Command Line Tools:
xcode-select --install
设置 Github Hosts
如果不使用国内网络或者没有遇到 Github DNS 污染问题,不需要设置 Github Hosts。
参考 GitHub Host 项目来设置 Github Hosts。
设置环境变量
如果使用官方镜像下载和更新,无需设置环境变量。
国内可以使用中科大镜像:
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"' >> ~/.zshrc
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"' >> ~/.zshrc
echo 'export HOMEBREW_INSTALL_FROM_API=1' >> ~/.zshrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"' >> ~/.zshrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"' >> ~/.zshrc
echo 'export HOMEBREW_PIP_INDEX_URL="https://mirrors.ustc.edu.cn/pypi/simple"' >> ~/.zshrc
source ~/.zshrc
或者使用清华镜像:
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"' >> ~/.zshrc
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"' >> ~/.zshrc
echo 'export HOMEBREW_INSTALL_FROM_API=1' >> ~/.zshrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"' >> ~/.zshrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zshrc
echo 'export HOMEBREW_PIP_INDEX_URL="https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"' >> ~/.zshrc
source ~/.zshrc
安装 Homebrew
下载并执行安装脚本:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
国内可使用中科大的镜像脚本安装:
/bin/bash -c "$(curl -fsSL https://mirrors.ustc.edu.cn/misc/brew-install.sh)"
或者使用清华的镜像安装:
git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install
/bin/bash brew-install/install.sh
rm -rf brew-install
查看安装的 Homebrew 版本:
brew -v
Homebrew 4.4.32
配置 Homebrew
编译加速
Homebrew 在安装软件时,可能会使用 make
、cmake
、 ninja
来编译安装,可以设置环境变量默认以启用最大核心并行编译:
# make
echo 'export MAKEFLAGS="-j$(sysctl -n hw.ncpu)"' >> ~/.zshrc
# cmake
echo 'export CMAKE_BUILD_PARALLEL_LEVEL="$(sysctl -n hw.ncpu)"' >> ~/.zshrc
# ninja
echo 'export NINJAFLAGS="-j$(sysctl -n hw.ncpu)"' >> ~/.zshrc
# source
source ~/.zshrc
关闭自动更新
可选择关闭 Homebrew 每次执行命令时自动更新:
echo 'export HOMEBREW_NO_AUTO_UPDATE=true' >> ~/.zshrc
source ~/.zshrc
恢复使用官方仓库
删除 zsh 配置文件中对应的环境变量配置项。
恢复 Homebrew 仓库地址:
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew
恢复 Homebrew Core 仓库:
brew tap --custom-remote --force-auto-update homebrew/core https://github.com/Homebrew/homebrew-core
恢复 Homebrew Cask 仓库:
brew tap --custom-remote --force-auto-update homebrew/cask https://github.com/Homebrew/homebrew-cask
恢复其他 tap 仓库:
brew tap --custom-remote --force-auto-update homebrew/command-not-found https://github.com/Homebrew/command-not-found
更新 Homebrew:
brew update
卸载 Homebrew
执行卸载脚本
执行官方卸载脚本:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
或者使用清华的卸载脚本镜像:
git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install
/bin/bash brew-install/uninstall.sh
rm -rf brew-install
脚本执行完需要手动清理残余文件。
The following possible Homebrew files were not deleted:
/usr/local/Cellar/
/usr/local/Homebrew/
/usr/local/bin/
/usr/local/etc/
/usr/local/include/
/usr/local/lib/
/usr/local/openssl/
/usr/local/share/
/usr/local/var/
You may wish to remove them yourself.
清理残留文件
删除 Homebrew 安装时生成的文件:
sudo rm -rf /usr/local/Cellar
sudo rm -rf /usr/local/Homebrew
sudo rm -rf /usr/local/var/homebrew
sudo rm -rf /usr/local/etc/bash_completion.d/brew
sudo rm -rf /usr/local/share/doc/homebrew
sudo rm -rf /usr/local/share/fish/vendor_completions.d/brew.fish
sudo rm -rf /usr/local/share/man/man1/brew.1
sudo rm -rf /usr/local/share/zsh/site-functions/_brew
在 /usr/local/etc
、/usr/local/lib
、/usr/local/share
等目录可能依然存在软件包残留的文件,需要自行甄别选择性删除。
Homebrew 常用命令
更新 Homebrew
brew update
查看软件包
使用关键字或正则搜索 Homebrew 支持的软件包:
brew search <text|/text/>
<text|/text/>
为软件名称关键字或者正则。
查看当前已安装的软件包:
brew ls|list
查看软件包依赖:
# 查看指定软件包的依赖树
brew deps --tree <formula>
# 查看指定软件包当前已安装的依赖
brew deps --installed <formula>
# 查看当前已安装的所有软件包的依赖树
brew deps --tree --installed
查看已安装的所有(指定)软件包缺失依赖:
brew missing [<formula>]
查看指定的软件包详细信息:
brew info <formula>
查看当前已安装的顶级(非依赖)软件包:
brew leaves
安装软件包
# 安装指定软件包(多个用空格隔开)
brew install <formula>
# 跳过依赖直接安装指定软件包
brew install --ignore-dependencies <formula>
# 只安装指定软件包的依赖不安装本身
brew install --only-dependencies <formula>
更新软件包
# 查看所有(指定)软件包是否需要更新
brew upgrade --dry-run [<formula>]
# 更新所有(指定)软件包
brew upgrade [<formula>]
卸载软件包
卸载指定软件包(多个用空格隔开,不会卸载其依赖):
brew uninstall <formula>
卸载孤立的依赖(卸载残留的非顶层的软件包):
# 查看孤立依赖
brew autoremove --dry-run
# 卸载孤立依赖
brew autoremove
符号链接
建立符号链接:
# 手动建立符号链接
brew ln|link <formula>
# 手动覆盖建立符号链接
brew ln|link --overwrite <formula>
删除符号链接:
brew unlink <formula>
Homebrew 符号链接存放目录为 /usr/local/bin
,软件包实际安装目录为 /usr/local/Cellar
。
清除缓存
清除所有缓存文件和残留的旧版文件:
brew cleanup
故障排查
权限不足
错误信息为:
Error: Permission denied @ apply2files - /usr/local/share/Library/Caches......
问题可能出现在系统升级之后,解决方案:
sudo chown -R $(whoami):admin /usr/local/*
sudo chmod -R g+rwx /usr/local/*