这两天在 Linux 环境部署一个 Go 项目遇到一个报错:copy_file_range: bad file descriptor。网上查找各种方法,花了两天的时间,经过一番折腾后才解决,觉得非常有必要记录一下过程。
一、问题复现
安装完 Go、配置完 Go 环境以及 Beego 框架运行 Go 项目,一直报下面的错:
期间经过 Go 卸载重装、代码修改等一系列网上查找的解决方法,都无济于事,最终通过降 Go 版本成功运行项目,解决此问题。
二、解决方法
1. Linux 环境卸载 Go
先执行 go env
查看 GOROOT
,我的 GOROOT=/usr/local/go
,进入 /usr/local
,删除 go 文件夹。
执行以下命令(因为我是在超级管理员下进行操作的,因此命令最前面不需要加 sudo)
rm -rf /usr/local/go
删除软链接:
rm /usr/bin/go /usr/bin/gofmt
2. Linux 环境安装 Go
首先使用 wget
下载 Go 安装包(因项目需要,我下的是 arm 架构下的 Go 版本)
附上一个 Go 安装包下载地址:Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
wget https://studygolang.com/dl/golang/go1.14.12.linux-arm64.tar.gz
解压安装包: