Ubuntu 24虚拟机中执行install-fabric.sh脚本克隆Hyperledger Fabric仓库时遭遇Git致命错误
看起来你在通过install-fabric.sh脚本部署Hyperledger Fabric环境时碰到了Git克隆的棘手问题,我来帮你拆解下问题根源和可行的解决办法。
首先先明确你的操作场景和遇到的错误:
你在Ubuntu 24虚拟机中执行了以下命令:
./install-fabric.sh docker samples binary
随后遭遇了Git克隆失败的一系列错误:
===> Cloning hyperledger/fabric-samples repo
Cloning into 'fabric-samples'...
remote: Enumerating objects: 13369, done.
remote: Counting objects: 100% (252/252), done.
remote: Compressing objects: 100% (157/157), done.
error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
error: 38022 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
fabric-samples v2.5.7 does not exist, defaulting to main. fabric-samples main branch is intended to work with recent versions of fabric.
fatal: not a git repository (or any of the parent directories): .git
问题根源分析
这些错误主要和Git克隆大仓库时的网络兼容性、缓存限制有关:
RPC failed; curl 92大多是HTTP/2协议在部分网络环境下的兼容性问题,Ubuntu 24默认的Git版本可能启用了HTTP/2,导致传输中断early EOF通常是Git缓存不足,无法处理大体积的仓库克隆- 最后出现的“not a git repository”是连锁错误:因为克隆失败,脚本后续尝试在未创建的Git仓库目录执行Git命令,自然报错
可行的解决步骤
1. 临时切换Git的HTTP协议为HTTP/1.1
很多时候HTTP/2的兼容性问题是罪魁祸首,先禁用它试试:
git config --global http.version HTTP/1.1
设置完成后重新运行你的install-fabric.sh脚本,或者手动尝试克隆仓库验证效果。
2. 调整Git缓存与压缩配置
增大Git的HTTP缓冲区,同时关闭压缩(避免传输过程中因压缩/解压缩出错):
git config --global http.postBuffer 524288000 git config --global core.compression 0
配置完成后再次尝试克隆或运行脚本。
3. 排查虚拟机网络环境
- 先测试虚拟机是否能正常访问GitHub:
ping github.com
如果无法连通,检查虚拟机的网络设置(比如是否开启了防火墙、是否需要配置代理)
- 若需要代理,给Git配置代理:
git config --global http.proxy http://你的代理地址:端口 git config --global https.proxy https://你的代理地址:端口
- 若不需要代理,确保没有残留的代理配置:
git config --global --unset http.proxy git config --global --unset https.proxy
4. 手动克隆仓库后再执行脚本
如果脚本自动克隆持续失败,你可以先手动完成克隆步骤,再让脚本处理后续工作:
# 手动克隆fabric-samples仓库 git clone https://github.com/hyperledger/fabric-samples.git # 进入仓库目录 cd fabric-samples # 脚本提到v2.5.7不存在,所以切换到main分支(或你需要的其他可用分支/标签) git checkout main # 回到上级目录,重新运行脚本 cd .. ./install-fabric.sh docker samples binary
5. 更新Git到最新版本
Ubuntu 24的Git版本虽然不算旧,但更新到最新版可能修复一些已知的网络相关bug:
sudo apt update sudo apt install --only-upgrade git
等克隆问题解决后,最后的“not a git repository”错误也会自动消失,因为脚本能正常找到已克隆的仓库目录了。
备注:内容来源于stack exchange,提问作者Deepak Kumar




