美文网首页iOSiOS一点通CocoaPods相关
SSL_ERROR_SYSCALL in connection

SSL_ERROR_SYSCALL in connection

作者: 张_何 | 来源:发表于2021-06-28 16:32 被阅读0次
    • 记一次 pod 安装三方库报SSL_ERROR_SYSCALL in connection to github.com:443错误的解决

    问题

    2021 6 月接手了一个 Flutter 开发的新项目,在 clone 完项目之后,首次运行提示我需要先要执行 pod install ,于是我在终端执行了 pod install,等了好久结果报SSL_ERROR_SYSCALL in connection to github.com:443的错误,我重新执行了pod install --verbose, 发现pod在安装PromiseKit的时候报的错误,于是我在网上开始查找解决方案,噩梦就此开始....

    尝试解决

    百度

    我将SSL_ERROR_SYSCALL in connection to github.com:443的错误复制到百度搜索,出来了好多结果,我选了几个感觉比较靠谱的去尝试,大致归为以下几种解决方案:

      1. 如果开启了代理上网,把代理上网关闭,然后终端执行
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

    然后再次尝试 pod install

      1. 打开代理上网,并在.gitconfig配置httphttps的代理
        打开网络偏好设置->高级->代理, 查看本机socks代理的端口号,
        [http "[https://github.com](https://github.com)"] proxy = socks5://127.0.0.1:本机 socks 代理端口号
        保存,关闭,再次尝试 pod install
      1. .gitconfig 修改 git的缓存
        git config --global http.postBuffer 4194304000
        然后再次尝试

    以上三种都是对.gitconfig 文件中的脚本进行修改,需要注意的是文件中的格式一定要正确,注意文本的对齐方式,要与之前的保持一致

    google

    • google上搜索出来的结果不多无非也是以上几种

    gem ruby cocoapods 上的操作

    • 查看了 pod的源, 然后按照网上的修改后,再尝试不行
    • 更新pod 版本到 1.10.1,然后再尝试还是不行
    • 更新 gem再尝试还是不行
    • ruby 版本由 2.6.0 升级到 2.7.3 还是不行
    • 更新 xcode 到 12.3 还是不行
    • 重新设置命令行,还是不行
    • 删除之前安装的 cocoapods重新安装还是不行

    网络

    • 看到网上有人说需要多试几次,有可能网络不行,多试几次有可能成功,我尝试了 N 多次 还是不行
    • 使用公司网还是家里的网络都不行
    • 不论是白天还是深夜都不行
    • 使用手机热点网络还是不行

    其他

    • 中间关机重启了 N 次也不行
    • 升级系统到最新也不行
    • 我注意到在 pod install 的时候每次都是在安装 promiseKit的时候报这个错误,原因是promiseKit有好多 submodule,在 git clone这些 submodule的时候就会有不固定的一部分submoduleclone 的时候报出SSL_ERROR_SYSCALL in connection to github.com:443的问题,于是我想手动把这些 submodule clone 下来然后放进去,结果还是不行

    .gitconfig 配置

    • 对比了两位同事的 gitconfig 文件的配置,除了代理和用户信息外感觉其他没什么区别

    经过了上面的各种尝试,我能想到还可以尝试的方法就是重装系统了,由于重装系统及配置相关环境和文件 copy 时间比较久,这种方法我暂时没实施

    解决

    在我等待合适时机重装系统的时候,转机出现了,有另外一位同事也加入了这个项目的开发,他也遇到了同样的问题,他尝试了一番后也是不行,我建议他重装系统尝试一下,然后他重装了系统,配置了相关环境之后竟然成功了。他的另一台电脑依旧不行,然后他对比了两台电脑的 .gitconfig文件的配置,发现重装系统后的文件中多了一段[url "https://hub.fastgit.org"] insteadOf = https://github.com的脚本,于是将这段脚本赋值到不成的电脑上再次pod install竟然也能成功了。
    这里需要注意.gitconfig文件中的格式一定要正确,不然没用的
    我将.gitconfig文件中的完整内容贴在下面以供参考,

    [core]
        excludesfile = /Users/***/.gitignore_global
    [difftool "sourcetree"]
        cmd = opendiff \"$LOCAL\" \"$REMOTE\"
        path = 
    [mergetool "sourcetree"]
        cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
        trustExitCode = true
    [user]
        name = “***”
        email = “***”
    
    [url "https://hub.fastgit.org"]
        insteadOf = https://github.com
    

    注意: 要根据用户情况修改user 中的信息和 core 中的路径

    后续

    在后面使用某些第三方的时候报错:fatal: could not read Username for Error: fatal: could not read Username for 'https://hub.fastgit.org': terminal prompts disable The process '/usr/bin/git' failed with exit code 128
    这里是因为我们将https://github.com全局替换为https://hub.fastgit.org导致的。用git@github.com:替换掉https://hub.fastgit.org既可解决这个错误。解决后.gitconfig文件中的内容如下:

    [core]
        excludesfile = /Users/jiwenzhang/.gitignore_global
    [difftool "sourcetree"]
        cmd = opendiff \"$LOCAL\" \"$REMOTE\"
        path = 
    [mergetool "sourcetree"]
        cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
        trustExitCode = true
    [user]
        name = “zhangjiwen”
        email = “1129802827@qq.com”
    [url "git@github.com:"]
        insteadOf = https://github.com
    

    相关文章

      网友评论

        本文标题:SSL_ERROR_SYSCALL in connection

        本文链接:https://www.haomeiwen.com/subject/sgnqultx.html