痛苦的经历
使用mac的同学都会经常使用brew 工具安装,我本来是需要安装一下ffmpeg来着,我就执行以下命令
brew install py3cairo ffmpeg
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/3/blobs/sha256:32da4055066fca85ebd5057718d0ec5c80eb162f796
############# 12.2%
############# 12.4%
############# 12.5%
############# 12.6%
############# 12.6%
############# 12.6%
############# 12.7%
############# 12.7%
################# 16.1%
这种情况还是好的,是安装慢,但是啊,好不容易下载完成后面伴有下面这种提示
Warning: formula.jws.json: update failed, falling back to cached version.
安装失败,死活也安装不了。。。
冷静分析
注意啦,这个事情很重要,主要原因是,我一开始碰到这种也是百度,也会指导说配置一个镜像之后下载就飞起。但是这种时候就是会发现有的时候起作用,有的时候又不灵,这就是少了一步冷静分析。
其实我们使用brew install 往往伴随以下过程
校验系统版本->校验brew版本->检查库的版本
- 首先如果是老版本系统会提示不支持的情况,或者失效,哎估计一贯以来苹果的策略吧,希望用户升级到新系统,相差几个版本的话就来个不支持,一定要搞到最新才行。这种情况就老实升级系统吧。
- brew版本太低了
这个是每次安装的时候会做检查,也可以主动触发,就是我们熟悉的brew update操作,这玩意吧,其实是在github上面的,由于国内网络环境确实比较差,所以这一步劝退了很多人 - brew管理的软件包下载失败,这种就是真正的下载软件包的动作,但是这个内部也存在库迁移的现象,类似如下的情况
brew install 无法从ghcr.io/v2/homebrew/core下载安装,怎么解决?
brew install 安装失败,http://homebrew.bintray.com失效,全部从ghcr.io/v2/homebrew/core 下载
系统更新
我们针对问题去解决,这样子才能做得彻底
系统更新就直接更新就好,我自己使用的家庭网络,也可以更新,没啥大问题
brew版本与仓库的更新
brew其实是保存在github仓库里面的,大凡没找到合适的科学上网的话确实比较困难,一般是推荐使用国内镜像,重新认识一下brew,全称是Homebrew,主要有四个部分组成: brew、homebrew-core 、homebrew-cask、homebrew-bottles,具体功能如下:
名称 | 说明 | 默认地址 |
---|---|---|
brew | Homebrew 源代码仓库 | HOMEBREW_BREW_GIT_REMOTE |
homebrew-core | Homebrew 核心源 | HOMEBREW_CORE_GIT_REMOTE |
homebrew-cask | 提供 macOS 应用和大型二进制文件的安装 | HOMEBREW_API_DOMAIN |
homebrew-bottles | 预编译二进制软件包 | HOMEBREW_BOTTLE_DOMAIN |
注意啦,当我们试着去解决brew源码仓库或者brew自身软件源的时候,其实我们就是去解决git远程仓库问题,Git Remote Mirroring,后面具体的软件包的时候其实是在解决软件包的源问题,其实是两趴事情
解决远程仓库Git Remote Mirroring
直接替换git仓库地址即可,网上也容易搜索到
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
好,这种信息我怎么知道呢,要学会查询官网,点击文档地址,找到下面的位置
其实比较清楚的啦,如果你是碰到链接github.com方面的问题,其实就可以使用git镜像替换,然后下面给出环境变量设置方式,这不就对应上了。
更多的环境变量参数
其实brew很多都是可以通过环境变量来控制的,比如说前面列出来的HOMEBREW_API_DOMAIN和HOMEBREW_BOTTLE_DOMAIN是怎么来的呢,其实是翻到了下面的内容:
HOMEBREW_BOTTLE_DOMAIN
Use this URL as the download mirror for bottles. If bottles at that URL are temporarily unavailable, the default bottle domain will be used as a fallback mirror.
For example, HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080 will cause all bottles to download from the prefix http://localhost:8080/. If bottles are not available at HOMEBREW_BOTTLE_DOMAIN they will be downloaded from the default bottle domain.
Default: https://ghcr.io/v2/homebrew/core.
HOMEBREW_API_DOMAIN
Use this URL as the download mirror for Homebrew JSON API. If metadata files at that URL are temporarily unavailable, the default API domain will be used as a fallback mirror.
HOMEBREW_BOTTLE_DOMAIN
使用这个url从bottles下载镜像包,如果这个链接暂时不能用的话,就会回退到默认的地址了。其实也就是字面上的意思,大家有时候发现下载不了之后会去尝试另外的地址,就是这么来的。
HOMEBREW_API_DOMAIN
这个是表示Homebrew JSON API的镜像地址
到了这一步,如果访问不了的话就调整镜像地址即可
export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/bottles"
这些都是哪里查询的,请大家关注 官网的地址
授人以渔
我其实不会喜欢直接改变系统原有的配置,所以我每次是在环境变量上面配置一下,临时性使用,因为我比较喜欢主动控制的感觉,以及出问题之后我需要逐步调整,并不喜欢一个命令下去就结束了,虽然运气好的时候确实是会成功,但是下一次的话就不好说。
另外我上面给到了一些镜像地址,网上其实可以搜到的,但是我查询到一个不错的助手网站,帮忙生成命令还能切换,可以用一波。里面其他信息也不错的。
文档地址
后记
就这些了,困恼我比较久的按照软件问题好了很多~~