主要是因为brew 安装依赖包不成功,如下错误:
第一种:
curl:(56)SSLRead()returnerror-36Error:An exception occurred within a child process:DownloadError:Failedtodownload resource"cmake"Download failed:https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3.tar.gz
第二种:
curl:(52)Emptyreply from serverError:An exception occurred within a child process:DownloadError:Failed to download resource"nghttp2"Download failed:https://github.com/nghttp2/nghttp2/releases/download/v1.35.1/nghttp2-1.35.1.tar.xz
第三种:
curl:(35)Server aborted theSSLhandshakeError:An exception occurred within a child process:DownloadError:Failed to download resource"webp"Download failed:https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz
解决问题:
mac brew 下载缓存目录:
~/Library/Caches/Homebrew
或者:
~/Library/Caches/Homebrew/Cask
打开后将看到“downloads”目录,里面就是安装依赖时下载的缓存文件,downloads文件夹同层级外面是downloads里面的文件替身,查看终端描述的是那个依赖包没有下载成功,自己用其他工具下载下来,一定要是相同版本,一般情况下直接复制终端提示的下载地址就可以了。
先下载好依赖包
查找文件名
进入brew缓存目录,查看哪个文件,接近后缀的位置,是对应要下载的依赖包名称,文件后缀为:.incomplete,大概是因为还没有下完整所以显示临时文件后缀。
如:
6b825e455816e590eb425b836e57003f1b1894513fd97b45dac8c9ee5053cf08--nghttp2-1.35.1.tar.xz.incomplete
修改为原来随机生成的那个文件名称,只是吧后缀删除掉,使其成为正常可被解压的文件名,注意不要随便更改随机文件名称!
然后再次在终端运行安装依赖包命令,brew会识别到已经下载完毕,直接进行安装了。
Downloading https://github.com/nghttp2/nghttp2/releases/download/v1.35.1/nghAlready downloaded:/Users/xxx/Library/Caches/Homebrew/downloads/6b825e455816e590eb425b836e57003f1b1894513fd97b45dac8c9ee5053cf08--nghttp2-1.35.1.tar.xz
当你找不到.incomplete文件时,是因brew还没开始生成下载的临时文件,那你就再次运行一下就可以了。
但凡是也就有意外,不幸的你跟我一样,发现还是报错了:
$ brew install dart
==> Installing dart from dart-lang/dart
==> Downloading https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.1/sdk/dartsdk-macos
curl: (56) LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
Error: An exception occurred within a child process:
DownloadError: Failed to download resource "dart"
Download failed: https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.1/sdk/dartsdk-macos-x64-release.zip
那该怎么解决?我们给命令加个 -v 打印命令的详细日志看看:
注意到这条信息:
/usr/bin/curl -q --show-error --user-agent Homebrew/2.1.9-21-g625a780\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 10.14.2\)\ curl/7.54.0 --fail --location --remote-time --continue-at 0 --output /Users/shockerli/Library/Caches/Homebrew/downloads/4d2412a5d84521393e0e1ecdce0662569e13c2c47762093a760939fa9dd4a917--dartsdk-macos-x64-release.zip.incomplete https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.1/sdk/dartsdk-macos-x64-release.zip
我们看到 Homebrew 下载 dart 的缓存地址为:
/Users/shockerli/Library/Caches/Homebrew/downloads/4d2412a5d84521393e0e1ecdce0662569e13c2c47762093a760939fa9dd4a917--dartsdk-macos-x64-release.zip.incomplete
XXX.incomplete 表示下载未完成,但这是 Homebrew 期望的下载文件路径。