golang:go install尝试/ usr/local而不是GOPATH

top*_*kip 15 install local go

这有点是我上一个问题的后续问题:golang:在本地目录中安装软件包

我已GOPATH设置$HOME/prog/go/gopath为此路径存在三个目录:

~/prog/go/gopath$ ls
bin  pkg  src
Run Code Online (Sandbox Code Playgroud)

现在我尝试安装一个模块来访问redis数据库,要求我运行

go install
Run Code Online (Sandbox Code Playgroud)

在源目录中.但命令go install给了我

~/prog/go/gopath/src/redis (go1)$ go install
go install flag: open /usr/local/go/pkg/darwin_amd64/flag.a: permission denied
~/prog/go/gopath/src/redis (go1)$ echo $GOPATH 
<myhomedir>/prog/go/gopath
Run Code Online (Sandbox Code Playgroud)

(哪里<myhomedir>是有效路径)

问题1:为什么go install不采取$GOPATH考虑?问题2:如何说服go install使用$GOPATH

dsk*_*ner 6

不知道你如何设置go但它可能需要从std库构建包但由于权限不能.你可以试试

cd /usr/local/go/src
sudo ./all.bash
Run Code Online (Sandbox Code Playgroud)

这应该构建std库并运行测试以确保一切正常.

确保您具有适当的权限,以便在必要时从$ GOROOT读取和执行.我个人只是从golang.org下载档案并将其保存在〜/ local/go下并适当地设置GOROOT.


Jay*_*Jay 5

类似的问题在这里 当我检查我的$ GOROOT时,我发现所有的库都已经在那里构建了.但由于某些原因,它试图重建所有库.所以我只是做一个小技巧:

find /usr/lib/go/pkg/ -name "*.*" | sudo xargs touch
Run Code Online (Sandbox Code Playgroud)

一切都很好.