Homebrew 到底有没有靠谱的安装包下载提速方式

Homebrew 到底有没有靠谱的安装包下载提速方式

Chris Yue No Comment
Posts

对于 Homebrew 提速的方法,网上大都是推荐使用各种镜像,但至少对目前来说,要想让 Homebrew 提速没那么简单。

Homebrew 安装或者更新程序,分成两个步骤:先更新程序信息(版本信息,依赖信息……),再根据程序信息去下载程序。这两个步骤都牵涉到网络访问,都有可能会被卡住。

我们先来看更新程序信息这个步骤。实际上 brew update 这个命令就是只用来更新程序信息的。我们可以通过加参数 v 或者 verbose 来看看 update 命令都具体做了什么:

brew update -v

正常情况,此命令会告诉你正在从某几个目录获取最新的信息(而且你很容易猜到,其实就是通过 Git)。至于是哪几个目录,我就不列出来了,大家试了就知道,说不定以后 Homebrew 出新版,目录会越来越多。总之,这几个目录都是程序信息,源都放在 GitHub,而国内的镜像,就是将 GitHub 这些维护 Homebrew 的程序信息的仓库,同步了一份放在国内的服务器,通过修改这些目录 Git 的源地址,就可以做到更新程序信息这步,速度可以有比较大的改观。

但遗憾的是,基本上所有的镜像,都只提供了 Homebrew 根目录和 Homebrew-core 目录的镜像,其他的都没有,但只要有需要更新程序信息的命令被运行,这些目录一定都会被执行 Git 仓库更新的操作,从而因为有些仓库无镜像可用,依然会被卡在访问 GitHub 网站上。

另外,更加令人绝望的是,即使有镜像站以后能做到所有程序信息目录都做镜像,但因为 brew 有 tap 功能的存在,如果你用过 tap,Homebrew 依然有可能在 update 的时候卡在某个 tap 过的仓库的更新上(简单来说,tap 是一个子命令,可以在 Homebrew 里注册非官方的程序信息仓库地址,大部分也都是放在 GitHub 上)。

接下来我们再说说下载程序这一步。Homebrew 提供程序下载镜像的设置(通过修改 HOMEBREW_BOTTLE_DOMAIN 环境变量),国内的确也提供了程序下载的镜像站点,像比较出名的有阿里和中科大的镜像。可惜的是,并不是所有的程序镜像都有同步,事实上,大部分的程序都是没有同步的。目前这些镜像对于没有同步过的程序,都是采取跳转回原地址这种方式,所以实际使用的时候会发现,大部分的程序还是会去原来的地址去下载,跟没用镜像没啥太大区别……

综合上面的结论,我认为目前国内的镜像都没有实际解决提速的问题(起码最出名的那几个是这样的),如果有条件,还是用代理的方式要靠谱许多,最后附上 Homebrew 使用代理的方法:

all_proxy=<socks5 代理地址> brew xxx

另外有一个可能会提高下载速度的办法:如果 Homebrew 大部分时间都花在第一步也就是获取程序信息这一步,而下载程序本身速度还能接受,那么可以在 brew update 的时候使用代理,而 brew upgrade 的时候不用代理。不过目前 upgrade 命令会自动先运行 update 命令,可以通过下面的方式关闭这个行为(brew install 同理)

HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade

Homebrew 到底有没有靠谱的安装包下载提速方式 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

写作累,服务器也越来越贵
求分担,祝愿好人一生平安
天使打赏人

发表评论

+ 20 = 29