解决国内Homebrew安装/更新/下载软件太慢问题:配置镜像源与终端代理的完整指南

本文详细介绍了如何解决 macOS 上 Homebrew 安装软件包时速度慢的问题。文章首先解释了 Homebrew 的基本概念,包括 Bottles、Core 和 Cask 的区别和作用,然后提供了两种加速方案:通过配置中科大或清华大学镜像源来提升下载速度,以及如何在终端中配置代理实现更快的安装速度。无论你是 macOS 新手还是经验丰富的开发者,这份指南都能帮助你优化 Homebrew 的使用体验。

阅读时长: 5 分钟
共 2076字
作者: eimoon.com

Homebrew是macOS系统上的包管理器,它可以让我们轻松安装、更新和管理软件包。作为开发,brew是我们必备的开发工具之一。默认官方的安装源都是存放在GitHub上的,这也是中国大陆用户访问缓慢的原因,例如下面安装obs,好几分钟才下载1.1%。 alt text

所以在大陆使用一般我们需要修改镜像源,我们会更倾向选择国内提供的更新源,在此推荐中国科大或者清华大学提供的更新源。

一、基本概念

在开始配置之前,我们先来了解几个概念:

  1. Bottles

    • 定义: 在 Homebrew 中,bottle 是指预编译好的软件包。它包含了一个已经构建好、准备好安装的二进制文件。
    • 作用: 使用 bottles 可以省去从源代码编译软件的时间,直接下载并安装二进制包。这样用户无需等待编译过程,可以快速完成软件的安装。
    • 示例: 当你运行 brew install 时,Homebrew 会优先选择下载与操作系统兼容的 bottle,如果没有合适的 bottle,则会从源代码进行编译。
    • 优点: 使用 bottle 安装软件可以大大加速安装过程,因为它避免了长时间的编译。
  2. Core

    • 定义: core 是 Homebrew 的核心部分,包含了最基本、最常用的命令和公式(formula),这些公式通常是从源代码编译安装的,涵盖了大多数常见的开源软件。
    • 作用: core 仓库中包括了 Homebrew 默认的公式和包管理功能。所有的公式都存储在 homebrew-core 仓库中,这些公式包括了 Linux 和 macOS 系统下的大多数开源软件。
    • 示例: 当你运行 brew install python 时,Homebrew 会从 homebrew-core 仓库中获取 Python 公式并进行安装。
  3. Cask

    • 定义: cask 是 Homebrew 中的一个扩展,用于管理图形界面应用程序(如浏览器、IDE、音频播放器等),这些应用通常是以 .dmg、.pkg 等格式发布的。
    • 作用: Homebrew Cask 允许你通过命令行安装和管理 macOS 应用程序,尤其是那些不通过标准的 Homebrew 公式发布的应用程序。
    • 特点: Cask 的软件包通常是预编译的二进制文件(比如 .dmg、.app),不像 core 中的软件包那样从源代码编译。Cask 可以自动化应用程序的下载和安装过程,免去了手动安装图形应用程序的麻烦。
    • 示例: 安装 Google Chrome:brew install –cask google-chrome,它会下载 .dmg 文件并将应用程序安装到 /Applications 文件夹。

自 brew 4.0.0 (2023 年 2 月 16 日) 起,HOMEBREW_INSTALL_FROM_API 会成为默认行为。大部分用户无需再克隆 homebrew-core 和 homebrew-cask仓库,故无需对core和cask额外设置。 因此下面的设置主要是针对Bottles。

二、首次安装

如果你安装HOMEBREW本身的时候就遇到速度慢,无法安装的情况,可以使用使用科大源安装 Homebrew

export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"

之后在命令行运行 Homebrew 安装脚本:

/bin/bash -c "$(curl -fsSL https://github.com/Homebrew/install/raw/HEAD/install.sh)"

二、 设置 Bottles

请在运行 brew 前设置环境变量 HOMEBREW_BOTTLE_DOMAIN,以中科大为例,值为

https://mirrors.ustc.edu.cn/homebrew-bottles。

将设置写入终端配置,根据你的使用的终端情况 bash/zsh,设置中科大源。

# 对于 bash 用户
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"' >> ~/.bash_profile

# 对于 zsh 用户
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"' >> ~/.zshrc

此外,brew 4.0 及之后的版本使用新的元数据 JSON API 接口,因此还需要设置环境变量 HOMEBREW_API_DOMAIN,值为 https://mirrors.ustc.edu.cn/homebrew-bottles/api

# 对于 bash 用户
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"' >> ~/.bash_profile
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"' >> ~/.bash_profile

# 对于 zsh 用户
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

对于core和cask 大部分情况都不需要金额额外设置。 如果确实需要,可以参考以下设置: 临时替换 core为中科大源

export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
brew update

将环境变量 HOMEBREW_CORE_GIT_REMOTE 加入 shell 的 profile 设置中。

# 对于 bash 用户
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"' >> ~/.bash_profile

# 对于 zsh 用户
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"' >> ~/.zshrc

重置为官方地址

unset HOMEBREW_CORE_GIT_REMOTE
brew tap --custom-remote homebrew/core https://github.com/Homebrew/homebrew-core

三、配置iterm 使用代理

有些情况,即使我们配置了国内源,下载安装软件还是很慢,我们可以配置我们的终端工具使用代理,以zsh 和clashx为例,根据你的代理软件不同,代理端口不同,可以通过你的代理软件查看。clashx的代理端口是7890.

# 编辑zsh的配置
vi ~/.zshrc

添加下面的配置

# 设置代理
function proxy {
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=hppts://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7890
    export no_proxy="localhost,127.0.0.1"
}

# 取消代理
function unproxy {
    unset http_proxy
    unset https_proxy
    unset all_proxy
    unset no_proxy
}

或者使用别名配置

alias proxy="
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=https://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7890
    export no_proxy='localhost,127.0.0.1'"
    
alias unproxy="
    unset http_proxy
    unset https_proxy
    unset all_proxy
    unset no_proxy"

你可以修改 proxy/unproxy 为你喜欢的单词 proxy_start/proxy_stop 等等。 当使用代理的时候,我们在iterm中输入

proxy

就开启了代理。 alt text 开启了代理后,同样是下载obs,速度是非常快的。 如果取消代理,则输入

unproxy

就取消代理。

四、总结与建议

通过以上配置,我们可以显著提升 Homebrew 在国内的使用体验。总的来说,我们有两种主要的加速方案:

  1. 使用国内镜像源:这是最基础也是最推荐的方案,通过配置 HOMEBREW_BOTTLE_DOMAIN 和 HOMEBREW_API_DOMAIN 环境变量,将下载源切换到中科大或清华镜像站。这种方式适合大多数用户,无需额外的代理设置。

  2. 终端代理:当镜像源仍无法满足需求时,可以通过配置终端代理来进一步提升下载速度。这种方式特别适合那些已经有稳定代理服务的用户。

在实际使用中,建议:

  • 首先尝试配置国内镜像源
  • 如果镜像源速度仍不理想,再配置终端代理
  • 定期更新 Homebrew 以获取最新的包信息:brew update
  • 如果遇到访问问题,可以尝试切换不同的镜像源
  • 使用 brew doctor 命令检查配置是否正常

通过合理配置,我们可以充分发挥 Homebrew 这一强大包管理工具的优势,提升开发效率。记住在不需要时及时关闭代理,保持良好的使用习惯。

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计