◆

Mac 安装 Homebrew 及代理问题处理

2023-02-02 01:370

Homebrew 是 macOS 上的包管理器,装命令行工具、开发环境、甚至 GUI 应用(通过 cask)都靠它,是新机器第一个要装的东西。

官方安装脚本托管在 GitHub 上,国内直连经常在克隆仓库那一步卡住不动,或者下到一半断开。原因是脚本本身很小,但它接下来要 clone homebrew-core 这个几十 MB 的仓库,还要从 GitHub Releases 拉预编译包,这些流量走直连不稳。

在命令行执行以下代码

下面这个是国内的镜像安装脚本,它会把 Homebrew 本体和几个核心 tap 的源都换成国内镜像,装的过程中会交互式让你选镜像源(中科大、清华、阿里等),按提示选一个就行:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

装完注意脚本最后的提示,它会告诉你把镜像相关的环境变量(HOMEBREW_BREW_GIT_REMOTE、HOMEBREW_API_DOMAIN、HOMEBREW_BOTTLE_DOMAIN 这些)写进 ~/.zshrc。这一步不能省——不写的话后续 brew install 又会去连官方源,等于白配。

执行第三方脚本前建议先看一眼内容,把命令里的 curl -fsSL <url> 单独跑一遍,把脚本打印出来读读做了什么。这是个好习惯,$(curl ...) 这种写法本质是把远程内容当命令执行,来源不可信的话风险很大。

Apple Silicon 的机器上 Homebrew 装在 /opt/homebrew,Intel 机器在 /usr/local。装完 brew -v 提示 command not found,就是 PATH 里没加对应的 bin 目录,执行 eval "$(/opt/homebrew/bin/brew shellenv)" 临时生效,写进 ~/.zshrc 永久生效。

Tip

如果总是下载没有成功,可能是 git 设置了代理,使用以下命令取消设置代理, 记得查看一下之前的代理,方便恢复

这个坑我踩过。Homebrew 的安装和更新底层大量用 git,如果之前给 git 配过全局代理而代理现在没在运行(比如换了网络环境、代理软件关了),git 会一直尝试连一个不存在的本地端口,表现就是卡住不动或者报连接拒绝,看起来像是网络慢,实际是代理配置失效。

删除代理

git config --global --unset https.proxy
git config --global --unset http.proxy

--unset 是删掉这一项配置,不是设成空值。如果同一个 key 有多条记录,--unset 会报错要求用 --unset-all。

查看 git 配置

删之前先看一眼原来配的是什么,记下来方便恢复:

git config --list

这条命令输出的是合并后的最终配置。想知道某一项来自哪个文件(系统级、全局、还是当前仓库)加上 --show-origin:git config --list --show-origin | grep proxy,能直接定位到是哪个文件里配的。

恢复代理就是反过来设回去:

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

端口按自己代理软件的实际设置填。这里有个细节:https.proxy 的值通常也写 http:// 而不是 https://,因为这里指的是「用什么协议连代理服务器」,绝大多数本地代理监听的是 HTTP CONNECT,不是 HTTPS。

更精细的做法是只给 GitHub 走代理,其他仓库直连,避免影响公司内网的 git 服务:

git config --global http.https://github.com.proxy http://127.0.0.1:7890

另外 Homebrew 本身也认 HTTP_PROXY、HTTPS_PROXY 这两个环境变量,用它们下载 bottle。所以「git 不走代理但 Homebrew 下载要走代理」这种组合是可以配出来的,两套配置互不影响。

💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEMac 安装 Homebrew 及代理问题处理加载中