避坑:过早的文件结束符(EOF):办理“git clone龙蜥OS源码失败”的失败过 ...

打印 上一主题 下一主题

主题 911|帖子 911|积分 2733

避坑:过早的文件结束符(EOF):办理“git clone龙蜥OS源码失败”的失败过程

安装Anolis OS 8.9

下载AnolisOS-8.9-x86_64-dvd.iso并安装。
使用uname -a检察内核版本为5.10.134-18.an8.x86_64。
  1. [root@localhost cloud-kernel]# cat /etc/anolis-release
  2. Anolis OS release 8.9
  3. [root@localhost cloud-kernel]# uname -a
  4. 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

2. git clone出错

git clone 过程中出现 过早的 EOF无效的 index-pack 输出 错误!
  1. # git clone https://gitee.com/anolis/cloud-kernel.git
  2. 正克隆到 'cloud-kernel'...
  3. remote: Enumerating objects: 11174639, done.
  4. remote: Counting objects: 100% (192/192), done.
  5. remote: Compressing objects: 100% (152/152), done.
  6. 致命错误:过早的文件结束符(EOF)9), 1.71 GiB | 532.00 KiB/s   
  7. 致命错误:fetch-pack:无效的 index-pack 输出
复制代码

尝试办理

1. 增大 http.postBuffer - 失败

网上很多人推荐设置这个参数,该参数用于设置 HTTP 传输的缓冲区大小.
应该设置多大呢?
监控git clone实验过程中的物理内存占用环境,以下图为例:

(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的。
  1. git config --global http.postBuffer 8192000000 # 8GB(单位:字节)
复制代码
但是最终照旧出现同样的错误效果。纵然我把虚拟机的内存调解到了16GB,依然出错。
2. 使用 SSH 协议 - 失败

AI推荐:如果 HTTP 仍失败,尝试改用 SSH 协议:
失败了!
  1. # git clone git@gitee.com:anolis/cloud-kernel.git
  2. 正克隆到 'cloud-kernel'...
  3. remote: Enumerating objects: 11175278, done.
  4. remote: Counting objects: 100% (182/182), done.
  5. remote: Compressing objects: 100% (100/100), done.
  6. [session-3c4d478c] Grpc Upload Pack error: rpc error: code = DeadlineExceeded desc = context deadline exceeded
  7. fetch-pack: unexpected disconnect while reading sideband packet
  8. 致命错误:过早的文件结束符(EOF)
  9. 致命错误:fetch-pack:无效的 index-pack 输出
复制代码
AI再次推荐:
  1. git config --global http.lowSpeedLimit 0
  2. git config --global http.lowSpeedTime 999999
  3. git config --global core.askPass /bin/echo
  4. echo "ServerAliveInterval 60" | tee -a ~/.ssh/config
  5. echo "ServerAliveCountMax 3" | tee -a ~/.ssh/config
复制代码
再次失败!
3. 分阶段克隆 部门乐成

先浅克隆最新提交,再渐渐拉取完备历史:
  1. git clone --depth=1 https://gitee.com/anolis/cloud-kernel.git
  2. cd cloud-kernel
  3. git fetch --unshallow
复制代码


  • git clone --depth 1 <repository_URL> 只会获取最新的提交(提交历史为1),而不会获取整个提交历史。-乐成
  • git fetch --unshallow 从远程仓库中拉取所有剩余的历史记录,使你的当地仓库包罗完备的提交历史。-失败
  1. [root@localhost ~]# git clone --depth 1 https://gitee.com/anolis/cloud-kernel.git
  2. 正克隆到 'cloud-kernel'...
  3. remote: Enumerating objects: 88308, done.
  4. remote: Counting objects: 100% (88308/88308), done.
  5. remote: Compressing objects: 100% (74784/74784), done.
  6. remote: Total 88308 (delta 6224), reused 41862 (delta 3011), pack-reused 0
  7. 接收对象中: 100% (88308/88308), 207.88 MiB | 480.00 KiB/s, 完成.
  8. 处理 delta 中: 100% (6224/6224), 完成.
  9. 正在更新文件: 100% (86470/86470), 完成.
  10. [root@localhost ~]# cd cloud-kernel/
  11. [root@localhost cloud-kernel]# git branch -av
  12. * devel-5.10                19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_call
  13.   remotes/origin/HEAD       -> origin/devel-5.10
  14.   remotes/origin/devel-5.10 19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_call
  15. [root@localhost cloud-kernel]# git log --pretty=oneline
  16. 19cfe5c48c07acb188677ca573b51f3135d0adc6 (grafted, HEAD -> devel-5.10, origin/devel-5.10, origin/HEAD) anolis: sw64: ftrace: implement ftrace_modify_call
  17. [root@localhost cloud-kernel]# git fetch --unshallow
  18. 错误:RPC 失败。curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
  19. 致命错误:预期 'acknowledgments'
复制代码
4. 最终折中的办法

先用git clone --depth 1拉取分支,然后用git fetch --depth 50拉去更深的commit信息。
  1. [root@localhost test]# git clone --depth 1 -b release/release-5.10.134-18.y https://gitee.com/anolis/cloud-kernel.git
  2. 正克隆到 'cloud-kernel'...
  3. remote: Enumerating objects: 88068, done.
  4. remote: Counting objects: 100% (88068/88068), done.
  5. remote: Compressing objects: 100% (74582/74582), done.
  6. remote: Total 88068 (delta 6210), reused 41793 (delta 3006), pack-reused 0
  7. 接收对象中: 100% (88068/88068), 207.65 MiB | 480.00 KiB/s, 完成.
  8. 处理 delta 中: 100% (6210/6210), 完成.
  9. 正在更新文件: 100% (86236/86236), 完成.
  10. [root@localhost test]# cd cloud-kernel/
  11. [root@localhost cloud-kernel]# git fetch --depth 50
  12. remote: Enumerating objects: 412, done.
  13. remote: Counting objects: 100% (412/412), done.
  14. remote: Compressing objects: 100% (149/149), done.
  15. remote: Total 324 (delta 273), reused 225 (delta 175), pack-reused 0
  16. 接收对象中: 100% (324/324), 64.88 KiB | 810.00 KiB/s, 完成.
  17. 处理 delta 中: 100% (273/273), 完成 86 个本地对象.
  18. remote: Enumerating objects: 4, done.
  19. remote: Counting objects: 100% (4/4), done.
  20. remote: Compressing objects: 100% (4/4), done.
  21. remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0
  22. 展开对象中: 100% (4/4), 647 字节 | 647.00 KiB/s, 完成.
  23. 来自 https://gitee.com/anolis/cloud-kernel
  24. * [新标签]              5.10.134-18 -> 5.10.134-18
  25. * [新标签]              5.10.134-18_rc1 -> 5.10.134-18_rc1
  26. * [新标签]              5.10.134-18_rc2 -> 5.10.134-18_rc2
  27. * [新标签]              5.10.134-18_rc2.1 -> 5.10.134-18_rc2.1
复制代码

跋文:我的环境没标题

同样的环境,尝试git clone linux官方代码数,完全没有标题。
而且看到,接收的对象大小为2.88GiB,比Anolis的1.71GiB还大。
到底是谁的标题呢?
  1. [root@localhost ~]# git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
  2. 正克隆到 'linux'...
  3. remote: Enumerating objects: 10668274, done.
  4. remote: Counting objects: 100% (171/171), done.
  5. remote: Compressing objects: 100% (119/119), done.
  6. remote: Total 10668274 (delta 97), reused 89 (delta 52), pack-reused 10668103
  7. 接收对象中: 100% (10668274/10668274), 2.88 GiB | 1.98 MiB/s, 完成.
  8. 处理 delta 中: 100% (8773900/8773900), 完成.
  9. 正在检查对象: 100% (33554432/33554432), 完成.
  10. 正在更新文件: 100% (87905/87905), 完成.
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表