DP

使用 Homebrew

David Peng

2020-12-31

Homebrew

Homebrew 是 macOS(或 Linux)缺失的软件包的管理器,在 Mac 用户中流传很广。Homebrew 官网(简体中文) 上介绍安装方法很简单,就一句话:

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

将以上命令粘贴至终端。脚本会在执行前暂停,并说明它将做什么。

这条命令很简单,先下载一个 install.sh Shell 脚本,然后用 Bash 运行它。安装步骤都放在 install.sh 这个文件中。实际国内用户在安装时会一直卡在第一个阶段,下载脚本的过程,原因就是在国内访问 Github 很慢,而 raw.githubusercontent.com 是放 RAW 文件的,服务器是在 AWS 上,国内访问更慢。即使你成功下载了这个脚本,因为毕竟很小,在执行这个脚本时会从 Github 克隆库,此时速度也会很慢。所以一般是安装不成功的。

有一个方法是买 VPN,然后通过代理服务器完成安装。缺点有以下几点:一、VPN 的速度不快,越快价格越贵。二、开 VPN 后会影响全局,所有上网都走代理,在访问国内网站时会变慢。三、花钱。

有更好的方法是使用国内的 Github 代理。这里以 cnpmjs.org 为例介绍。

安装 Homebrew

先设两个环境变量:

export HOMEBREW_CORE_GIT_REMOTE="https://github.com.cnpmjs.org/Homebrew/homebrew-core"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
# 以上是使用清华的源,也可以使用中科大的源
# export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"

可以将以上几行加入 ~/.zshrc~/.bash_profile 中。

将上述命令中的地址变为使用 jsDelivr CDN 的地址。jsDelivr CDN 虽然是国外开源的 CDN,但在国内有节点,访问速度还是挺不错的。

第二步我们需要将脚本中的 BREW_REPO 变量对应的值修改为 cnpmjs.org 的代理地址。cnpmjs 代理的方法特别简单,就是在原地址的 github.com 的后面加上 cnpmjs.org 即可。此处BREW_REPO 变量对应的原值是 https://github.com/Homebrew/brew,改为 https://github.com.cnpmjs.org/Homebrew/brew 即可。改后的安装脚本如下:

/bin/bash -c "$(
    curl -fsSL https://cdn.jsdelivr.net/gh/Homebrew/install@master/install.sh |
    sed 's|^BREW_REPO=.*$|BREW_REPO="https://github.com.cnpmjs.org/Homebrew/brew"|g'
)"

然后再用一个脚本自动设置几个常用软件库的源地址为代理地址,并自动安装。

BREW_TAPS="$(brew tap)"
for tap in core cask{,-fonts,-drivers,-versions}; do
    if echo "$BREW_TAPS" | grep -qE "^homebrew/${tap}\$"; then
        # 将已有 tap 的上游设置为本镜像并设置 auto update
        # 注:原 auto update 只针对托管在 GitHub 上的上游有效
        git -C "$(brew --repo homebrew/${tap})" remote set-url origin https://github.com.cnpmjs.org/Homebrew/homebrew-${tap}.git
        git -C "$(brew --repo homebrew/${tap})" config homebrew.forceautoupdate true
    else   # 在 tap 缺失时自动安装(如不需要请删除此行和下面一行)
        brew tap --force-auto-update homebrew/${tap} https://github.com.cnpmjs.org/Homebrew/homebrew-${tap}.git
    fi
done

完成后即可使用 Homebrew 来安装、更新 app 了。

参考资料

以上脚本基于清华大学镜像网站的说明改写。

©2020 David Peng ♥ 采用 Pandoc 搭建