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

其他镜像源

  1. 中科大镜像源
  2. 腾讯镜像源
  3. 阿里镜像源

参考文献:


  1. Homebrew ↩︎

一个在学日本語的前端程序猿