编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Homebrew 的优化

wxchong 2024-06-14 13:31:57 开源技术 17 ℃ 0 评论

Homebrew 用来管理 macOS 缺失的软件包,由于该工具使用起来很简单,因此使用非常广泛,可以说 Homebrew 是 macOS 中必备的工具之一。

安装

国内用户在下载安装前,最好先将 Homebrew 的 git 镜像地址设置为国内的镜像源以加快安装速度:

本文以中科大镜像源为例,读者朋友可根据喜爱换成阿里镜像源或清华镜像源。

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
source ~/.zshrc
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,根据提示执行 shellenv 命令,将 Homebrew 添加到 PATH、HOMEBREW_PREFIX 等变量中:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

安装地址如下:

  • x86: /usr/local/Homebrew/
  • Apple M1: /opt/homebrew

优化?

国内用户使用 brew 安装软件时,会发现速度慢的惊人。我们可以通过增加 --verbose 参数来查看具体卡在哪,不过一般说来都是因为下载速度慢导致的,对此可通过如下两种方式优化,两种方式二选一即可。

设置代理?

若本地有代理,可通过 ALL_PROXY=socks5://127.0.0.1:1080(假设代理端口为 1080)让 brew 走代理来加快下载速度,如:

ALL_PROXY=socks5://127.0.0.1:1080 brew install ghostscript

本方式适用有代理服务器的用户。

报错?

执行 ALL_PROXY=socks5://127.0.0.1:1080 brew install imagemagick 时报错如下:

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to ghcr.io:443

在执行命令前,尝试先执行 export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles 能否解决这个问题。若不能,则建议使用修改上游源地址的方式来重新安装软件,见下文。

修改仓库上游源地址?

若需要修改源地址,则如下仓库的上游地址均需修改:

  • brew: Homebrew 源代码仓库
  • homebrew-core: Homebrew 核心软件仓库。对于常用的一些工具包,Homebrew 提供了预编译的二进制包,以加快安装速度,这种方式称为 bottles。
  • homebrew-cask: 扩展了 Homebrew,用来优化 macOS GUI 应用的安装和管理。相关仓库还有 homebrew-cask-fonts, homebrew-cask-drivers, homebrew-cask-versions。

按如下命令修改仓库源地址:

  • 设置 HOMEBREW_BREW_GIT_REMOTE、HOMEBREW_CORE_GIT_REMOTE 和 HOMEBREW_BOTTLE_DOMAIN 为中科大镜像源,若已设置则此步可跳过。
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_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"' >> ~/.zshrc
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc
  • 更新仓库源地址
for tap in core cask{,-versions} ; do
    brew tap --custom-remote --force-auto-update "homebrew/${tap}" "https://mirrors.ustc.edu.cn/homebrew-${tap}.git"
done

若某个仓库更新太慢,可直接手动下载。如 homebrew-core 下载太慢,通过如下方式下载:

cd "$(brew --repo)/Library/Taps/homebrew"
rm -rf homebrew-core
git clone git://mirrors.ustc.edu.cn/homebrew-core.git
  • 执行 brew update 重新远程拉取

还原上游仓库源地址?

若需要还原上游仓库源地址

  • 删除 ~/.zshrc 中关于 Homebrew 的配置
sed -i "" '/homebrew/d' ~/.zshrc
source ~/.zshrc
  • 还原仓库源地址
BREW_TAPS="$(BREW_TAPS="$(brew tap 2>/dev/null)"; echo -n "${BREW_TAPS//#39;\n'/:}")"
for tap in core cask{,-fonts,-drivers,-versions} ; do
    if [[ ":${BREW_TAPS}:" == *":homebrew/${tap}:"* ]]; then  # 只复原已安装的 Tap
        brew tap --custom-remote --force-auto-update "homebrew/${tap}" "https://github.com/Homebrew/homebrew-${tap}"
    fi
done
  • 执行 brew update 重新远程拉取

卸载?

执行命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh) 即可卸载。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表