Homebrew 是 MacOS、Linux 下的一个软件管理程序,使用 MacOS 的人或多或少应该有使用过或听说过。虽然 Homebrew 并不是 MacOS 官方的软件管理器,但是到目前为止,Homebrew 应该已经成了一个事实上标准,就如 Homebrew 官网所说:『使用 Homebrew 安装 Apple(或您的 Linux 系统)没有预装但 你需要的东西。[1]』
但是,Homebrew 使用 Github 的资源,而 Github 资源因众所周知的原因在大陆是无法访问的,这就是 brew update
或者 brew install xxx
无响应或者失败的原因。我们可以更换 Homebrew 的镜像源,让它正常工作!推荐使用清华大学的镜像源速度快又稳定。注意:下列命令运行环境为 zsh
。
更换清华大学镜像源
在配置文件中增加环境变量
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"' >> ~/.zprofile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"' >> ~/.zprofile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zprofile
#使配置文件生效
source ~/.zprofile
更换 Homebrew 软件内的镜像地址
# 手动设置
brew tap --custom-remote --force-auto-update homebrew/core https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
brew tap --custom-remote --force-auto-update homebrew/cask https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
brew tap --custom-remote --force-auto-update homebrew/cask-fonts https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
brew tap --custom-remote --force-auto-update homebrew/cask-drivers https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
brew tap --custom-remote --force-auto-update homebrew/cask-versions https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-versions.git
brew tap --custom-remote --force-auto-update homebrew/command-not-found https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-command-not-found.git
#更新 Homebrew
brew update
# 或使用下面的几行命令自动设置
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
for tap in core cask{,-fonts,-drivers,-versions} command-not-found; do
brew tap --custom-remote --force-auto-update "homebrew/${tap}" "https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-${tap}.git"
done
#更新 Homebrew
brew update
这样就更换完毕,能自由玩耍了☺️。
复原仓库上游
当你不在大陆时,可能想要使用官方的地址,毕竟镜像仓库还是会有同步的问题。
# brew 程序本身,Homebrew / Linuxbrew 相同
unset HOMEBREW_BREW_GIT_REMOTE
unset HOMEBREW_CORE_GIT_REMOTE
unset HOMEBREW_BOTTLE_DOMAIN
# 注释掉配置文件中的环境变量
$ vi ~/.zprofile
# export HOMEBREW_BOTTLE_DOMAIN=xxx
# export HOMEBREW_CORE_GIT_REMOTE=xxx
# export HOMEBREW_BOTTLE_DOMAIN=xxx
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew
# 以下针对 macOS 系统上的 Homebrew
unset HOMEBREW_CORE_GIT_REMOTE
BREW_TAPS="$(BREW_TAPS="$(brew tap 2>/dev/null)"; echo -n "${BREW_TAPS//$'\n'/:}")"
for tap in core cask{,-fonts,-drivers,-versions} command-not-found; do
if [[ ":${BREW_TAPS}:" == *":homebrew/${tap}:"* ]]; then # 只复原已安装的 Tap
brew tap --custom-remote "homebrew/${tap}" "https://github.com/Homebrew/homebrew-${tap}"
fi
done
# 重新拉取远程
brew update
其他镜像源
参考文献: