[Linux实践] macOS平台Homebrew更新brew update卡死,完美解决

时间:2024-06-01 00:08:08

[Linux实践] macOS 平台 Homebrew 更新 brew update 卡死,完美解决

版本2020.01.05

摘要:
使用brew install [软件包]安装软件包时,卡在Updating Homebrew...
或输入`brew update`更新brew,半天没反应.产生原因一般是在国内访问官方
更新源获取资源太慢,解决方案可以采用更换国内镜像更新源.
关键词: Linux; macOS; mac; Homebrew; brew update; 开源软件镜像站;
一. Homebrew 简介
  1. Homebrew是什么?

    • Homebrew是macOS或Linux缺失的软件包的管理器.
  2. 如何安装Homebrew?

    • 命令行里运行以下命令即可.
    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Homebrew几点备注.

    • Homebrew会将软件包安装到独立目录,一般为/usr/local/Cellar目录.
    • 然后将文件软连接至执行路径,一般为/usr/local/bin目录.
二. Homebrew 命令
  • brew install [包名]
  • brew update
  • brew update -verbose
  • brew cleanup:清理旧有软件包.
  • brew doctor:诊断Homebrew的问题.
  • brew update-reset
三. brew update 卡死解决方案
  1. 问题场景.
    • 场景1.使用brew install [软件包]安装其他软件包,卡在Updating Homebrew...
    • 场景2.输入brew update更新brew,半天没反应.
  2. 原因分析.
    • 对于场景1我们可以选择Control-C直接终止当前前台update进程,然后brew就会接着执行install了.
    • 但这样并不能"治本",其实造成上述两种情况的主要原因是资源访问太慢.
    • 我们知道默认官方更新源在github.com上,因为一些原因,国内访问不太顺畅.
    • 解决方案是我们可以选择国内镜像更新源.
    • 国内镜像更新源推荐中国科大开源软件镜像站清华大学开源软件镜像站.
    • 某些同学可能要有疑问了,"我已经按照网上其他教程替换更新源了呀?怎么还不行?"
    • 这里回答是,"可能你并没有更换彻底".
      • 输入brew update -verbose我们可以看到brew update工作的具体步骤.
      $ brew update -verbose
      Checking if we need to fetch /usr/local/Homebrew...
      Checking if we need to fetch /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask...
      Fetching /usr/local/Homebrew...
      Checking if we need to fetch /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core...
      Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask...
      Checking if we need to fetch /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services...
      Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core...
      Already up-to-date.
      • 我们可以看到它一共检查了Homebrew,homebrew-cask,homebrew-core,homebrew-services这几个文件.
      • 而网上大部分教程替换更新源时往往只替换了Homebrewhomebrew-core这两个的源.
      • 出问题,可能就出在homebrew-cask这个文件上,而我之前运行brew update -verbose显示卡死也的确是卡在这个地方.
      • 所以知道了原因,我们只要把homebrew-cask这个文件的更新源也替换一下即可.
      • 具体操作见中国科大镜像源:homebrew-cask.
  3. 解决方案,以USTC镜像为例.