当前位置: 首页 > 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…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...