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的镜像源.


  • 2018-12-10 00:57:37

    Android沉浸式状态栏(透明状态栏)最佳实现

    在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,会出现上图中左侧的画面,在屏幕的顶部有一条黑色的状态栏,和应用的风格非常不协调;为了提供更好的界面交互,google在Android4.4以后提供了设置沉浸式状态栏的方法,对于沉浸式状态栏这个名字存在争议,我们不做讨论,实际的效果其实就是透明的状态栏,然后在状态栏的位置显示我们自定义的颜色,通常为应用的actionbar的颜色,或者是将应用的整体的一张图片也占据到状态栏中,如下图所示:

  • 2018-12-11 10:20:40

    Android下载图片到相册

    调用以上系统自带的方法会把bitmap对象保存到系统图库中,但是这种方法无法指定保存的路径和名称,上述方法的title、description参数只是插入数据库中的字段,真实的图片名称系统会自动分配。 或者

  • 2018-12-11 15:45:00

    Laravel中七个非常有用但很少人知道的Carbon方法

    在编写PHP应用时经常需要处理日期和时间,Carbon继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单,这篇文章主要给大家分享了Laravel中七个非常有用但很少人知道的Carbon方法,需要的朋友可以参考下。

  • 2018-12-13 11:41:23

    Android drawable微技巧,你所不知道的drawable的那些细节

    好像有挺久时间没更新博客了,最近我为了准备下一个系列的博客,也是花了很长的时间研读源码。很遗憾的是,下一个系列的博客我可能还要再过一段时间才能写出来,那么为了不至于让大家等太久,今天就给大家更新一篇单篇的文章,讲一讲Android drawable方面的微技巧。

  • 2018-12-13 17:14:41

    Android安全开发之浅谈密钥硬编码

    在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码、文件中,这样做会引起很大风险。信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文;对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名。

  • 2018-12-13 17:17:02

    轻松实现动态获取Android手机CPU架构类型

    .so文件是unix的动态连接库,是二进制文件,作用相当于windows下的.dll文件。 他使用了C/C++代码编写的可以操作硬件比java更高级的 底层代码,执行速度和效率比其他语言要高。 在Android中调用动态库文件(*.so)都是通过jni的方式。