最近在运行RN项目的时候发现,在我pod install命令安装pod包时产生了 SSL_ERROR_SYSCALL 的错误,如下所示。
[!] Error installing CocoaAsyncSocket
[!] /usr/bin/git clone https://github.com/robbiehanson/CocoaAsyncSocket.git /var/folders/v0/2435fl9178sd4r2_1mdgk_r40000gn/T/d20230919-49258-1ot32p3 --template= --single-branch --depth 1 --branch 7.6.5
Cloning into '/var/folders/v0/2435fl9178sd4r2_1mdgk_r40000gn/T/d20230919-49258-1ot32p3'...
fatal: unable to access 'https://github.com/robbiehanson/CocoaAsyncSocket.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
下面是一些常见的解决方案:
方案一:重启计算机
众所周知,重启解决 90% 的问题,有时候重启电脑可以直接解决这一问题。
结果: 该方法对我无效。
方案二、修改 Git 网络配置
对于 Git 的网络设置,可以采用以下方式进行修改:
删除 HTTP / HTTPS 代理设置:
可以直接修改全局 Git 配置文件进行修改:
$ vim ~/.gitconfig
删除文件中 HTTP / HTTPS 的相关配置即可
也可以使用命令进行修改:
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy
更改 HTTP / HTTPS 加密库:
由于该问题是 LibreSSL 库报错,可以修改 Git 使用 OpenSSL 库进行 HTTPS 的通信。
$ git config --global http.sslBackend "openssl"
结果: 该方法对我无效。
方案三、修改计算机网络配置
由于使用 IPv6 的原因,可能会导致这一问题的出现。可以配置计算机不使用 IPv6,故使用以下命令:
$ networksetup -setv6off Wi-Fi
如果有需要,可以再将配置修改回来:
$ networksetup -setv6automatic Wi-Fi
不过,上面的方法也没有解决我的问题。
方案四、使用 HTTPS 代理
需要更改本地 Git 的网络配置,以使用代理向 GitHub 发起请求,执行如下命令:
git config --global -e
这将进入 Git 的配置文件编辑界面(将使用 Git 指定的默认编辑器打开,通常是 Vim 或者 Nano)。在该文件中加入如下内容:
[http]
proxy = socks5://127.0.0.1:7891
[https]
proxy = socks5://127.0.0.1:7891
注意,将上面的端口修改为自己本地梯子的端口,比如我本地是7890。
方案五、使用 SSH
众所周知 git clone 可以使用 HTTPS 或者 SSH 两种不同的协议来克隆 GitHub 仓库。既然 HTTPS 会收到网络环境的限制,而 SSH 却没有这些限制,我们不妨将本地 Git 和 GitHub 之间的通信协议由 HTTPS 改为 SSH。
进入仓库对应目录,执行如下命令:
$ git remote set-url origin git@github.com:xxx/xxx.git
更改完成后,可以使用如下命令查看当前的 origin 地址:
$ git remote -v
其中,后面的两种方法对我是有效的,如下图,