SSL_ERROR_SYSCALL in connection to github.com:443的解決

  • 記一次 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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容