当前位置: 首页 > news >正文

避坑:过早的文件结束符(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。

[root@localhost cloud-kernel]# cat /etc/anolis-release 
Anolis OS release 8.9
[root@localhost cloud-kernel]# 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
在这里插入图片描述

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执行过程中的物理内存占用情况,以下图为例:
在这里插入图片描述
(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.
[session-3c4d478c] 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 从远程仓库中拉取所有剩余的历史记录,使你的本地仓库包含完整的提交历史。-失败
[root@localhost ~]# 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), 完成.
[root@localhost ~]# cd cloud-kernel/
[root@localhost cloud-kernel]# git branch -av
* devel-5.10                19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_callremotes/origin/HEAD       -> origin/devel-5.10remotes/origin/devel-5.10 19cfe5c48 anolis: sw64: ftrace: implement ftrace_modify_call
[root@localhost cloud-kernel]# git log --pretty=oneline
19cfe5c48c07acb188677ca573b51f3135d0adc6 (grafted, HEAD -> devel-5.10, origin/devel-5.10, origin/HEAD) anolis: sw64: ftrace: implement ftrace_modify_call
[root@localhost cloud-kernel]# 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信息。

[root@localhost test]# 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), 完成.[root@localhost test]# cd cloud-kernel/[root@localhost 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还大。

到底是谁的问题呢?

[root@localhost ~]# 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), 完成.

相关文章:

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

避坑&#xff1a;过早的文件结束符&#xff08;EOF&#xff09;&#xff1a;解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...

【Quest开发】全身跟踪

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …...

通过BingAPI爬取Bing半个月内壁纸

通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种&#xff0c;第一种为间接爬取&#xff0c;即并不直接对Bing网站发起请求&#xff0c;而是对那些收集汇总了Bing壁纸的网站发起请求&#xff0c;爬取图片…...

Linux升级Anacodna并配置jupyterLab

在使用 Anaconda 的过程中&#xff0c;随着项目和需求的发展&#xff0c;可能需要升级 Anaconda 的 Base 环境中的 Python 版本。本文将详细介绍如何安全地进行升级&#xff0c;包括步骤、代码示例与最终流程图。 升级 Python 一、环境准备 在进行任何升级之前&#xff0c;建…...

ctfshow web入门 web11-web24

web11 web12 进来浏览网站&#xff0c;底部有一串数字&#xff0c;根据提示可能有用&#xff0c;访问robots.txt&#xff0c;发现禁止访问/admin/&#xff0c;进去看看发现需要输入用户名和密码&#xff0c;刚想爆破就猜对了&#xff0c;用户名是admin&#xff0c;密码是页面下…...

Windows 环境下配置多个不同版本的 Maven

在实际开发中,不同的项目可能需要使用不同版本的 Maven。例如,老项目可能依赖于 Maven 3.3,而新项目可能需要 Maven 3.8+ 才能正常运行。因此,在 Windows 下配置多个 Maven 版本并能方便地切换是非常必要的 1. 下载并安装多个 Maven 版本 1.1 下载 Maven 访问 Apache Mav…...

web入侵实战分析-常见web攻击类应急处置实验1

场景说明&#xff1a; 某天运维人员发现在/opt/tomcat8/webapps/test/目录下&#xff0c;多出了一个index_bak.jsp这个文件&#xff0c; 并告诉你如下信息 操作系统&#xff1a;ubuntu-16.04业务&#xff1a;测试站点中间件&#xff1a;tomcat开放端口&#xff1a;22&#x…...

适配器模式 Adapter Pattern

https://en.wikipedia.org/wiki/Adapter_pattern https://www.baeldung.com/java-adapter-pattern 适配器模式&#xff08;也称为包装器「wrapper」&#xff0c;与装饰器模式「decorator pattern」共享的另一种命名&#xff09;&#xff0c;它允许将现有类的接口用作另一个接…...

Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位

需求如下&#xff1a; 项目 测试demo 有多个渠道&#xff0c;部分渠道包含支付功能&#xff0c;在主测试代码外&#xff0c;需要一个单独 Activity 调用测试代码。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因为支付功能需要引入对应的 moudule&#xff0c;因此…...

芝加哥学派(Chicago School):金融与经济学的创新力量(中英双语)

芝加哥学派&#xff1a;金融与经济学的创新力量 在经济学和金融学的历史上&#xff0c;有一个学派的影响力不容忽视&#xff0c;那就是芝加哥学派&#xff08;Chicago School&#xff09;。芝加哥学派不仅在学术界广受推崇&#xff0c;也深刻影响了全球的经济政策和金融市场。…...

3分钟了解内外网文件传输:常见方法、注意事项有哪些?

内外网文件传输不仅是企业日常运营的基础设施&#xff0c;更是支持业务增长、创新和合规的关键工具。通过高效、安全的文件传输&#xff0c;企业能够更好地应对全球化协作、远程办公和数据安全等挑战&#xff0c;从而在竞争激烈的市场中保持领先地位。 一、内外网文件传输的常…...

Python学习心得常用的内置函数

常用的内置函数&#xff1a; 1.数据类型转换函数&#xff1a; 描述说明 描述说明 bool(obj) 获取指定对象 obj 的布尔值 str(obj) 将指定对象 obj 转成字符串类型 int(x) 将 x 转成 int 类型 float(x) 将 x 转成 float 类型 list(sequence) 将序列转成列表类型 tu…...

VMware Workstation16安装Centos7以及静态IP设置

配置虚拟机操作系统 1.创建新的虚拟机 -> 自定义配置&#xff0c;下一步 2. 选择虚拟机硬件兼容性 -> 默认&#xff0c;下一步 3.安装客户机操作系统 -> 稍后安装操作系统&#xff0c;下一步 4.选择客户机操作系统 -> LinuxCentOS7 64 位&#xff0c;下一步 5.命名…...

【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》

一、当AB实验不可行时,我们该相信什么?(因果推断困局解析) 假设某城市推出「夜间地铁免费」政策,市长想知道这个政策是否真的提升了夜间经济。这时候你会发现: 1️⃣ 无法克隆城市:不能同时存在一个「实施政策」和「不实施政策」的平行宇宙 2️⃣ 数据混杂严重:疫情反…...

Token Embedding(词嵌入)和Positional Encoding(位置编码)的矩阵形状关系及转换过程

在从零开始构建一个小型字符级语言模型时,简化的实现步骤是:数据准备→模型架构设计→训练→评估与生成。模型架构设计阶段的流程如下: 图1 模型架构设计阶段的流程 包含了输入层、嵌入层、解码器层和输出层。其中在嵌入层中包括了Token Embedding(词嵌入)和Positional En…...

多个用户如何共用一根网线传输数据

前置知识 一、电信号 网线&#xff08;如以太网线&#xff09;中传输的信号主要是 电信号&#xff0c;它携带着数字信息。这些信号用于在计算机和其他网络设备之间传输数据。下面是一些关于网线传输信号的详细信息&#xff1a; 1. 电信号传输 在以太网中&#xff0c;数据是…...

U-Net 与深度学习的完美结合:图像分割的高效解决方案

1. 引言&#xff1a;U-Net背景及应用 1.1 U-Net的起源与发展 U-Net 是由 Olaf Ronneberger 和他的团队于2015年提出的卷积神经网络&#xff08;CNN&#xff09;架构。最初的设计目的是解决医学图像分割中的挑战&#xff0c;尤其是在有限的训练数据下如何实现准确的分割。 在…...

nginx ngx_http_module(9) 指令详解

nginx ngx_http_module(9) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_uwsgi_module&#xff1a;uWSGI支持模块&#xff0c;允许Nginx与uWSGI服务器进行通信。uWSGI是一种应用服务器协议&#xff0c;广泛用于Python Web应用的部署。通过该…...

【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~

本篇文章将对项目搜索引擎&#xff08;1&#xff09;~&#xff08;3&#xff09;进行性能优化&#xff0c;包括测试&#xff0c;优化思路&#xff0c;优化前后对比 目录 一&#xff1a;文件读取 二&#xff1a;实现多线程制作索引 1&#xff1a;代码分析 2&#xff1a;代码…...

【HarmonyOS Next】鸿蒙应用进程和线程详解

【HarmonyOS Next】鸿蒙应用进程和线程详解 一、前言 进程的定义&#xff1a; 进程是系统进行资源分配的基本单位&#xff0c;是操作系统结构的基础。 在鸿蒙系统中&#xff0c;一个应用下会有三类进程&#xff1a; (1) 主进程&#xff0c; (2) ExtensionAbility进程&#xff…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...