我做了个工具,让切换 Homebrew 镜像像切 npm 源一样简单

先说说那个让人崩溃的场景

相信每个用 Mac 的开发者都经历过这个:

打开终端,敲下 brew install 某个包,然后......光标就在那里闪啊闪,进度条纹丝不动。

要么挂着梯子装,要么去网上搜"Homebrew 换源教程",然后面对一堆 git remote set-url、改环境变量的命令,手动复制粘贴,一不小心还容易敲错。

更麻烦的是------出差、回国、网络环境一变,又得再来一遍。

现有方案的问题

网上的换源教程大多是这个路子:

bash 复制代码
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
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
source ~/.zshrc

每次换源要敲五六条命令,URL 又长又容易拼错。想换回官方源?再查一遍教程。

我用 Node.js 的时候有个工具叫 nrm,nrm use taobao 一条命令搞定切换,用起来很爽。Homebrew 为什么没有类似的东西?

于是我花了半天写了一个:brm

brm 是什么

Homebrew Registry Manager,像 nrm 管理 npm 源一样管理 Homebrew 镜像源。

核心就三个命令:

brm ls # 看看有哪些源可以选 brm use ustc # 切! brm info # 确认一下当前用的哪个 URL

切换完提示你执行一下 source ~/.zshrc,完事。

安装

bash 复制代码
curl -fsSL https://gitee.com/philiam/brm/raw/main/install.sh | bash

使用

bash 复制代码
brm ls              # 列出所有可用源
brm use ustc        # 切换到中科大镜像
brm info            # 查看当前源的详细 URL
brm info tuna       # 查看指定源的详细 URL
brm current         # 查看当前源名称

切换后执行一次,使当前终端立即生效:

bash 复制代码
source ~/.zshrc     # zsh 用户
source ~/.bash_profile  # bash 用户

可用源

名称 说明
official Homebrew 官方(GitHub)
ustc 中科大镜像
tuna 清华镜像
bfsu 北外镜像
aliyun 阿里云镜像

原理

每次切换做三件事:

  1. git remote set-url 更新 Homebrew 本地仓库的 remote URL
  2. 在 shell 配置文件(.zshrc / .bash_profile)中写入 HOMEBREW_BOTTLE_DOMAIN 等环境变量
  3. 记录当前源到 ~/.local/share/brm/current

环境变量块用 marker 包裹,切换时自动替换,不会重复追加:

bash 复制代码
# >>> brm managed >>>
export HOMEBREW_BREW_GIT_REMOTE="..."
export HOMEBREW_BOTTLE_DOMAIN="..."
# <<< brm managed <<<

最后

工具目前内置了中科大、清华、北外、阿里云四个国内镜像,日常够用。

Gitee 地址:gitee.com/philiam/brm

欢迎 Star,也欢迎提 Issue 补充其他镜像源。

相关推荐
行百里er8 小时前
Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
redis·后端
高频因子挖掘机9 小时前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
孟健10 小时前
从5000亿Token到83%字节匹配:AI逆向工程与重构的工程闭环实践
后端·架构·ai编程
码事漫谈10 小时前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端
迪飞特科技10 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑11 小时前
@JsonInclude注解使用
spring boot·后端·spring
IT_陈寒11 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信11 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy11 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网11 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python