Updating Homebrew... 更新了镜像依然卡死

2020-01-06 23:02:42

参考地址 macOS平台Homebrew更新brew update卡死,完美解决

其实你更换了镜像以后展示Updating Homebrew...他并没有阻止我们进行安装某些东西,我们我们可以选择Control-C直接终止当前前台update进程,然后brew就会接着执行install了.

但这样治标不治本,接下来我们看应该怎么办

一. 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. 原因分析.

    • 输入brew update -verbose我们可以看到brew update工作的具体步骤.

    • 我们可以看到它一共检查了Homebrew,homebrew-cask,homebrew-core,homebrew-services这几个文件.

    • 而网上大部分教程替换更新源时往往只替换了Homebrewhomebrew-core这两个的源.

    • 出问题,可能就出在homebrew-cask这个文件上,而我之前运行brew update -verbose显示卡死也的确是卡在这个地方.

    • 所以知道了原因,我们只要把homebrew-cask这个文件的更新源也替换一下即可.

    • 具体操作见中国科大镜像源:homebrew-cask.

    • 对于场景1我们可以选择Control-C直接终止当前前台update进程,然后brew就会接着执行install了.

    • 但这样并不能"治本",其实造成上述两种情况的主要原因是资源访问太慢.

    • 我们知道默认官方更新源在github.com上,因为一些原因,国内访问不太顺畅.

    • 解决方案是我们可以选择国内镜像更新源.

    • 国内镜像更新源推荐中国科大开源软件镜像站清华大学开源软件镜像站.

    • 某些同学可能要有疑问了,"我已经按照网上其他教程替换更新源了呀?怎么还不行?"

    • 这里回答是,"可能你并没有更换彻底".

      $ brew update -verboseChecking 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.
  3. 解决方案,以USTC镜像为例.

    • 步骤1.替换Homebrew源.
      shell $ cd "$(brew --repo)" $ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

    • 步骤2.替换homebrew-core源.
      shell $ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" $ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

    • 步骤3.替换homebrew-cask源.
      shell $ cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask $ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

    • 补充. 中国科大开源软件镜像站清华大学开源软件镜像站同时提供的有Homebrew二进制预编译包Homebrew-bottles的镜像源.


  • 2017-07-26 11:57:00

    Laravel 定时任务

    在 php 中使用定时器是一件不太简单的事情,之前大概只能通过 cron 来实现定时任务。但是在 Laravel5 中,定时任务将会变得很简单。

  • 2017-08-03 21:16:46

    Node.js 里面那些遗失的 ES6 特性

    其实 Node.js 对 ES6 的很多特性都已经开始支持了。 在 Node.js 使用的 JS 引擎 V8 里面将不同状态 ES6 特性分成了 3 个等级:

  • 2017-08-08 11:17:17

    nginx 反向代理 取得真实IP和域名

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。