输入git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
报错
问题一: error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
查找相关资料, 尝试了以下方法:
- 修改git配置:
可以使用下面的代码查看自己的git配置
git config -l
可能是因为项目太大引发该错误, 因此需要增大缓存区
git config --global http.postBuffer 524288000 # httpBuffer加大
git config --global http.maxRequestBuffer 100M
git config --global core.compression 0 # 压缩配置
compression 是压缩的意思,从 clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1…9 是压缩速度与最终获得文件大小的不同程度的权衡,数字越大,压缩越慢,当然得到的文件会越小. 我后来又把compression设为-1/
此外, 还要增大MTU值.
ifconfig # 查看网络信息
sudo ifconfig eno1 mtu 9000 # 设置当前网络eno1的mtu为9000(最大只能设置到9000)
对我无用
-
更换协议
不使用https协议, 而使用ssh
将sudo git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
更换为sudo git clone git://gitlab.eurecom.fr/oai/openairinterface5g.git
对我无用 -
重新编译git并安装
链接:https://zhuanlan.zhihu.com/p/53961303
# 首先安装一些必要的环境和依赖
sudo apt-get install build-essential fakeroot dpkg-dev
# 在home路径下创建一个名为git-rectify的路径(路径名不重要,可以为其他名称)
mkdir ~/git-rectify
# 进入路径,获取git的源文件
cd ~/git-rectify
apt-get source git
# 安装依赖
sudo apt-get build-dep git
# 安装libcurl的依赖文件
sudo apt-get install libcurl4-openssl-dev
# 进入目录(原链接中这里有错误,不需要解压步骤)
cd git-2.17.1/
# 修改文件内容,需要修改两个文件
vim ./debian/control # 把libcurl4-gnutls-dev 修改为 libcurl4-openssl-dev
vim ./debian/rules # 把TEST=test整行删除
# 编译和构建安装包
sudo dpkg-buildpackage -rfakeroot -b
# 我在这一步出现错误error: failed to sign .changes file
# 在后面再加两个参数-uc -us 即可解决该问题
# 即我运行的是 sudo dpkg-buildpackage -rfakeroot -b -uc -us
# 退回上一级目录,安装编译好的安装包
cd ..
sudo dpkg -i git_2.17.1-1ubuntu0.4_amd64.deb
对我无用, 我再次git clone后变成了问题三.
问题二: error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
前面的操作排列组合, 出现过这样的错误提示, 但是我搜资料发现该问题与问题一解决方法一样, 而且有时候提示该问题, 有时候提示问题一, 就不再展开了.
问题三:error: RPC failed; curl 18 transfer closed with outstanding read data remaining
这个问题的解决方案也有前面说过的增大缓存区和换协议, 这里再介绍几个新的方法:
-
寻找github最新网址, 修改hosts配置
在https://blog.csdn.net/qq_17282141/article/details/99671865这个链接中,博主给出了一个终极解决方案, 我还没有尝试 -
重新安装git
sudo apt-get purge git # 清除软件包和配置文件
sudo apt-get install git # 安装git
- 更新git版本
我发现我的git版本是2.7, 官网已经更新到2.30了, 于是乎我更新了git版本试了试.
下面代码可以查看git版本:
git --version
首先添加git软件源:
sudo add-apt-repository ppa:git-core/ppa
接着, 更新软件列表, 升级更新git
sudo apt update
sudo apt install -f
sudo apt upgrade
更新到了2.29.0版本.
- 浅克隆
克隆的时候,先少克隆一些,比如只克隆每个文件只取最近一次提交,不是整个历史版本.
git clone https://github.com/flutter/flutter.git --depth 1
之后再进入目录下, 更新
git fetch --unshallow
这是我离成功最近的一次, 我最后一次看的时候到了86%, 吃饭回来看到它又失败了. 但是不用全部, 我只用浅克隆的也可以做实验.
- 浅克隆+克隆其他分支
浅克隆默认克隆的是master分支, 在编译步骤总是有很多错误. 我发现OAI有版本, 心想应该更完整吧, 于是选择了v1.2.0, 我也没细看各版本的区别, 随便试了一个, 编译很成功, 于是乎这个也记录下来吧.
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git --branch v1.2.0 --depth 1
克隆后进入/openairinterface5g文件夹, 切换到该分支, 再进行编译.
cd openairinterface5g
git checkout v1.2.0
source oaienv
... # 其他编译步骤