ARM架构Ubuntu从源码编译git-lfs遇Go包找不到问题
解决ARM Ubuntu上编译git-lfs时缺失context/httptrace包的问题
你的问题核心很明确:你安装的Go版本(go1.2.1)过于老旧,完全不满足git-lfs源码编译的依赖要求。
为什么会找不到这些包?
context包是在Go 1.7版本才正式被纳入标准库的,在Go 1.7之前它只是一个第三方包(golang.org/x/net/context),而git-lfs的代码是基于标准库的context编写的,所以你的老版本Go根本识别不了这个包。net/http/httptrace则是Go 1.10版本才新增的标准库模块,Go 1.2.1自然没有这个模块的定义。
具体解决步骤
1. 卸载旧版本的Go
先把系统里的老版本Go清理干净:
sudo apt-get remove golang-go sudo apt-get autoremove
2. 安装适配ARM架构的新版Go
推荐安装Go的长期支持版本(比如1.21系列),适配ARM架构的安装包可以直接从官方下载:
# 这里以ARMv6架构为例,如果你是ARM64,替换成linux-arm64.tar.gz wget https://dl.google.com/go/go1.21.5.linux-armv6l.tar.gz sudo tar -C /usr/local -xzf go1.21.5.linux-armv6l.tar.gz
接下来配置环境变量,编辑~/.bashrc文件:
nano ~/.bashrc
在文件末尾添加:
export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go
保存退出后刷新环境变量:
source ~/.bashrc
验证版本是否安装成功:
go version
此时应该显示类似 go version go1.21.5 linux/arm 的输出。
3. 重新编译git-lfs
首先拉取git-lfs的源码(如果还没获取的话):
go get github.com/git-lfs/git-lfs/v3/cmd/git-lfs
进入源码目录执行编译:
cd $GOPATH/src/github.com/git-lfs/git-lfs go build ./cmd/git-lfs
编译完成后,把生成的二进制文件放到系统可执行路径:
sudo cp git-lfs /usr/local/bin/
最后验证git-lfs是否安装成功:
git lfs install
额外提示
如果你实在不想升级Go,理论上可以寻找git-lfs的极旧版本(兼容Go 1.2的),但非常不推荐——旧版本不仅缺少大量功能,还存在安全漏洞,而且很难找到维护状态良好的源码分支。升级Go是最稳妥、最省心的解决方案。
内容的提问来源于stack exchange,提问作者sagism
相关产品推荐
相关产品推荐

