避坑:过早的文件结束符(EOF):办理“git clone龙蜥OS源码失败”的失败过
避坑:过早的文件结束符(EOF):办理“git clone龙蜥OS源码失败”的失败过程安装Anolis OS 8.9
下载AnolisOS-8.9-x86_64-dvd.iso并安装。
使用uname -a检察内核版本为5.10.134-18.an8.x86_64。
# cat /etc/anolis-release
Anolis OS release 8.9
# uname -a
Linux localhost.localdomain 5.10.134-18.an8.x86_64 #1 SMP Fri Dec 13 16:32:58 CST 2024 x86_64 x86_64 x86_64 GNU/Linux
通过HTTPS协议git clone内核代码库出错
1. 找到git clone下令
打开网址:https://gitee.com/anolis/cloud-kernel
点击**“克隆/下载”按钮,选择“HTTPS"**标签,复制下令到终端实验:
git clone https://gitee.com/anolis/cloud-kernel.git
https://i-blog.csdnimg.cn/direct/240cacd9beff436b8c43064fb4fdece5.png
2. git clone出错
git clone 过程中出现 过早的 EOF 和 无效的 index-pack 输出 错误!
# git clone https://gitee.com/anolis/cloud-kernel.git
正克隆到 'cloud-kernel'...
remote: Enumerating objects: 11174639, done.
remote: Counting objects: 100% (192/192), done.
remote: Compressing objects: 100% (152/152), done.
致命错误:过早的文件结束符(EOF)9), 1.71 GiB | 532.00 KiB/s
致命错误:fetch-pack:无效的 index-pack 输出
尝试办理
1. 增大 http.postBuffer - 失败
网上很多人推荐设置这个参数,该参数用于设置 HTTP 传输的缓冲区大小.
应该设置多大呢?
监控git clone实验过程中的物理内存占用环境,以下图为例:
https://i-blog.csdnimg.cn/direct/e1bc95ff11cf4c22a10c77b078316a84.png
(1)当git clone接收对象的大小为833.58MiB,占比15%,可以算出最终大小为5557MiB.
(2)通过top可以看到此时共4个git相关进程在运行,统计RES列(RES代表实际占用物理内存,单位为KB),共占用内存587680KB,大概587MB,是git clone统计值的70%(587/833.58)。
以是设置8GB的http.postBuffer应该是OK的。
git config --global http.postBuffer 8192000000 # 8GB(单位:字节)
但是最终照旧出现同样的错误效果。纵然我把虚拟机的内存调解到了16GB,依然出错。
2. 使用 SSH 协议 - 失败
AI推荐:如果 HTTP 仍失败,尝试改用 SSH 协议:
失败了!
# git clone git@gitee.com:anolis/cloud-kernel.git
正克隆到 'cloud-kernel'...
remote: Enumerating objects: 11175278, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (100/100), done.
Grpc Upload Pack error: rpc error: code = DeadlineExceeded desc = context deadline exceeded
fetch-pack: unexpected disconnect while reading sideband packet
致命错误:过早的文件结束符(EOF)
致命错误:fetch-pack:无效的 index-pack 输出
AI再次推荐:
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
git config --global core.askPass /bin/echo
echo "ServerAliveInterval 60" | tee -a ~/.ssh/config
echo "ServerAliveCountMax 3" | tee -a ~/.ssh/config
再次失败!
3. 分阶段克隆 部门乐成
先浅克隆最新提交,再渐渐拉取完备历史:
git clone --depth=1 https://gitee.com/anolis/cloud-kernel.git
cd cloud-kernel
git fetch --unshallow
[*]git clone --depth 1 <repository_URL> 只会获取最新的提交(提交历史为1),而不会获取整个提交历史。-乐成
[*]git fetch --unshallow 从远程仓库中拉取所有剩余的历史记录,使你的当地仓库包罗完备的提交历史。-失败
# git clone --depth 1 https://gitee.com/anolis/cloud-kernel.git
正克隆到 'cloud-kernel'...
remote: Enumerating objects: 88308, done.
remote: Counting objects: 100% (88308/88308), done.
remote: Compressing objects: 100% (74784/74784), done.
remote: Total 88308 (delta 6224), reused 41862 (delta 3011), pack-reused 0
接收对象中: 100% (88308/88308), 207.88 MiB | 480.00 KiB/s, 完成.
处理 delta 中: 100% (6224/6224), 完成.
正在更新文件: 100% (86470/86470), 完成.
# cd cloud-kernel/
# git branch -av
* devel-5.10 19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_call
remotes/origin/HEAD -> origin/devel-5.10
remotes/origin/devel-5.10 19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_call
# git log --pretty=oneline
19cfe5c48c07acb188677ca573b51f3135d0adc6 (grafted, HEAD -> devel-5.10, origin/devel-5.10, origin/HEAD) anolis: sw64: ftrace: implement ftrace_modify_call
# git fetch --unshallow
错误:RPC 失败。curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
致命错误:预期 'acknowledgments'
4. 最终折中的办法
先用git clone --depth 1拉取分支,然后用git fetch --depth 50拉去更深的commit信息。
# git clone --depth 1 -b release/release-5.10.134-18.y https://gitee.com/anolis/cloud-kernel.git
正克隆到 'cloud-kernel'...
remote: Enumerating objects: 88068, done.
remote: Counting objects: 100% (88068/88068), done.
remote: Compressing objects: 100% (74582/74582), done.
remote: Total 88068 (delta 6210), reused 41793 (delta 3006), pack-reused 0
接收对象中: 100% (88068/88068), 207.65 MiB | 480.00 KiB/s, 完成.
处理 delta 中: 100% (6210/6210), 完成.
正在更新文件: 100% (86236/86236), 完成.
# cd cloud-kernel/
# git fetch --depth 50
remote: Enumerating objects: 412, done.
remote: Counting objects: 100% (412/412), done.
remote: Compressing objects: 100% (149/149), done.
remote: Total 324 (delta 273), reused 225 (delta 175), pack-reused 0
接收对象中: 100% (324/324), 64.88 KiB | 810.00 KiB/s, 完成.
处理 delta 中: 100% (273/273), 完成 86 个本地对象.
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0
展开对象中: 100% (4/4), 647 字节 | 647.00 KiB/s, 完成.
来自 https://gitee.com/anolis/cloud-kernel
* [新标签] 5.10.134-18 -> 5.10.134-18
* [新标签] 5.10.134-18_rc1 -> 5.10.134-18_rc1
* [新标签] 5.10.134-18_rc2 -> 5.10.134-18_rc2
* [新标签] 5.10.134-18_rc2.1 -> 5.10.134-18_rc2.1
跋文:我的环境没标题
同样的环境,尝试git clone linux官方代码数,完全没有标题。
而且看到,接收的对象大小为2.88GiB,比Anolis的1.71GiB还大。
到底是谁的标题呢?
# git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
正克隆到 'linux'...
remote: Enumerating objects: 10668274, done.
remote: Counting objects: 100% (171/171), done.
remote: Compressing objects: 100% (119/119), done.
remote: Total 10668274 (delta 97), reused 89 (delta 52), pack-reused 10668103
接收对象中: 100% (10668274/10668274), 2.88 GiB | 1.98 MiB/s, 完成.
处理 delta 中: 100% (8773900/8773900), 完成.
正在检查对象: 100% (33554432/33554432), 完成.
正在更新文件: 100% (87905/87905), 完成.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]