Homebrew 中的一些概念及配置国内镜像源方法。
安装 Homebrew
执行以下命令,脚本会提示选择国内几个比较常用的镜像,选择中科大镜像然后一路安装即可。
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
# Set Homebrew-bottles mirror
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
查看 Homebrew 远程仓库 URL
# lists all currently tapped repositories.
brew tap
# Homebrew 源代码仓库
git -C "$(brew --repo)" remote -v
# Homebrew 核心软件仓库
git -C "$(brew --repo homebrew/core)" remote -v
# Homebrew cask 软件仓库,提供 macOS 应用和大型二进制文件
git -C "$(brew --repo homebrew/cask)" remote -v
# Homebrew cask 其他版本 (alternative versions) 软件仓库,提供使用人数多的、需要的版本不在 cask 仓库中的应用。
git -C "$(brew --repo homebrew/cask-versions)" remote -v
Homebrew 使用代理
有时候镜像源中没有我们要安装的包,这时会从官方连接进行下载,速度依然较慢,此时可以使用代理进行下载,直接在终端设置代理即可。
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891
手工设置 Homebrew 国内镜像源
如果需要手工设置国内镜像源,可以选择国内常用的有以下三大镜像源,
中科大镜像包含 cask
源,因此这里使用中科大做为镜像源。
# 替换 Homebrew (Homebrew 源代码仓库)
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 替换 Homebrew Core (Homebrew 核心软件仓库)
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 替换 Homebrew Cask (Homebrew Cask 软件仓库,提供 macOS 应用和大型二进制文件)
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
# 替换 Homebrew cask 其他版本 (alternative versions) 软件仓库,提供使用人数多的、需要的版本不在 cask 仓库中的应用。
brew tap --custom-remote --force-auto-update homebrew/cask-versions https://mirrors.ustc.edu.cn/homebrew-cask-versions.git
# Homebrew 预编译二进制软件包
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc
恢复官方源
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
brew tap --custom-remote --force-auto-update homebrew/cask-versions https://github.com/Homebrew/homebrew-cask-versions
Homebrew 中的 keg-only formula
Hard to understand what keg-only means
所有的 formula 都安装在 Cellar 中 (Cellar 路径: brew --Cellar
)
例如
/usr/local/Cellar/elasticsearch/5.2.2
/usr/local/Cellar/elasticsearch@1.7/1.7.6_1
所有 formula 都是 opt-linked (opt 路径)
例如
/usr/local/opt/elasticsearch -> ../Cellar/elasticsearch/5.2.2
/usr/local/opt/elasticsearch@1.7 -> ../Cellar/elasticsearch@1.7/1.7.6_1
只有 non-keg-only 的 formula 才会软链接到 Homebrew prefix (brew --prefix
)
/usr/local/bin/elasticsearch -> ../Cellar/elasticsearch/5.2.2/bin/elasticsearch
默认情况下,/usr/local/bin
会在你的 PATH
里,而下面的路径不在 PATH
里
(a) /usr/local/opt/elasticsearch/bin
(b) /usr/local/opt/elasticsearch@1.7/bin
对于路径 (a),因为 /usr/local/bin
已经在 PATH
中,所以不会有问题,运行 elasticsearch
会执行 /usr/local/bin/elasticsearch
,其指向 /usr/local/Cellar/elasticsearch/5.2.2/bin/elasticsearch
。
对于路径 (b),因为 /usr/local/Cellar/elasticsearch@1.7/1.7.6_1/bin/elasticsearch
没有软链接到 /usr/local/bin
,你只能通过全路径来执行,或者将 /usr/local/opt/elasticsearch@1.7/bin
前置到 PATH
中。
之所以在 PATH
中前置 /usr/local/opt/elasticsearch@1.7/bin
而不是 /usr/local/Cellar/elasticsearch@1.7/1.7.6_1/bin
是因为如果你遇到修订版本到2 (比如 1.7.6_2) 或升级了小版本 (1.7.7),opt
路径依然有效,而 Cellar
路径则必须更新到新的版本。
opt
路径对于 non-keg-only 的 formula 依然有效,但是 non-keg-only formula 一般都会软链接到 /usr/local/bin
,且该路径已经在 PATH
中了,所以没必要使用 opt
路径。如果你 brew unlink
了一个 non-keg-only formula,那它就变成一个 keg-only formula,这时通过前置它的 opt
路径到 PATH
,即使你 unlink 了它,你依然可以继续使用这个 formula。这在你安装两个有冲突的 non-keg-only 的 formula 时非常有用,你可以 unlink 其中一个来解决冲突。