linux环境下golang安装第三方库的时候出错,求解决办法

发布于 2022-09-01 06:22:11 字数 1589 浏览 28 评论 0

使用如下方式安装beego的时候出错

go get github.com/astaxie/beego

错误信息:

go install unicode/utf8: open /opt/go/pkg/linux_amd64/unicode/utf8.a: permission denied
go install unicode: open /opt/go/pkg/linux_amd64/unicode.a: permission denied
go install math: open /opt/go/pkg/linux_amd64/math.a: permission denied
go install sort: open /opt/go/pkg/linux_amd64/sort.a: permission denied
go install hash: open /opt/go/pkg/linux_amd64/hash.a: permission denied
go install unicode/utf16: open /opt/go/pkg/linux_amd64/unicode/utf16.a: permission denied
go install crypto/subtle: open /opt/go/pkg/linux_amd64/crypto/subtle.a: permission denied
go install container/list: open /opt/go/pkg/linux_amd64/container/list.a: permission denied
go install internal/syscall: open /opt/go/pkg/linux_amd64/internal/syscall.a: permission denied
go install time: open /opt/go/pkg/linux_amd64/time.a: permission denied

然后我在命令前加了一个sudo,然后提示

go: cannot find GOROOT directory: /usr/local/go

我的golang环境配置如下:

GOARCH="amd64"
GOBIN="/opt/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/buchenglei/workspace/golang"
GORACE=""
GOROOT="/opt/go"
GOTOOLDIR="/opt/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

该怎么解决呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

羞稚 2022-09-08 06:22:11

参考上面的答案,我自己又摸索了一下,找到了一个比较完善的解决办法,如下:

go install unicode/utf8: open /opt/go/pkg/linux_amd64/unicode/utf8.a: permission denied

出现这样的错误原因是,当初我是直接将golang的压缩包拷到了/opt目录下,所有的源代码都未经编译,应该先切换到/opt/go/src目录下,执行sudo ./make.bash脚本编译,完成后在使用如下命令安装beego就不会出错了:

go get github.com/astaxie/beego

这样的话,在执行如下命令安装bee工具的时候会提示权限不够:

go get github.com/beego/bee

go install github.com/beego/bee: open /opt/go/bin/bee: permission denied

对此我的解决办法是先切换到/opt目录,执行如下命令,修改go文件夹的权限:

sudo chmod -R 777 go/

这样就能正常安装bee工具了。

你げ笑在眉眼 2022-09-08 06:22:11

你这个环境配置是通过go env打印出来的么?还有就是你的golang是软件包管理安装的,还是下载安装的,感觉你这个好像是由于用包管理安装的原因,或者说机器上存在两个golang引起的,当然这也是我的猜测

更新:还有一种可能是你的环境变量设置在用户目录下的.bash.profile下,而不是/etc/profile下,只对当前用户生效。当你sudo 时,就拿不到goroot,所以访问默认的goroot

逆蝶 2022-09-08 06:22:11

go get github.com/astaxie/beego 会先clone然后build , build的时候要通过 GOROOT 找到 go的安装目录,

go: cannot find GOROOT directory: /usr/local/go

这个错误是因为没找到环境变量, 然后默认找 /usr/local/go 也没找到,所以报错,

解决方法: 先source 一下配置文件, 然后echo $GOROOT 看看结果

无远思近则忧 2022-09-08 06:22:11

我觉得,你可以把源码放在用户目录下面,然后在编译,应该就不会有权限的问题了吧。
或者 你可以直接 apt-get 或者 yum 来安装也是可以的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文