这有点是我上一期提问的后续问题:golang: installing packages in a local directory
我将GOPATH
设置为$HOME/prog/go/gopath
,此路径存在三个目录:
~/prog/go/gopath$ ls
bin pkg src
现在我尝试安装module to access the redis database,要求我运行
go install
在源目录中。但命令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
(其中<myhomedir>
是有效路径)
问题1:go install
为什么不考虑$GOPATH
?
问题2:如何说服go install
使用$GOPATH
?
答案 0 :(得分:6)
不确定如何设置go但是它可能需要从std库构建软件包,但由于权限而无法构建软件包。你可以尝试
cd /usr/local/go/src
sudo ./all.bash
这应该构建std库并运行测试以确保一切正常。
确保您具有必要的权限,以便从$ GOROOT读取和执行。我个人只是从golang.org下载档案并将其保存在〜/ local / go下并正确设置GOROOT。
答案 1 :(得分:5)
这里有类似的问题。当我检查我的$ GOROOT时,我发现所有的库都已经在那里构建了。但由于某些原因,它试图重建所有库。所以我只是做了一个小技巧:
find /usr/lib/go/pkg/ -name "*.*" | sudo xargs touch
然后一切正常。
答案 2 :(得分:3)
我认为你需要的命令是“go get”:
go get github.com/alphazero/Go-Redis
将下载Go-Redis库并将其放入$ GOPATH / src目录。
go install在您自己的源代码上执行编译和安装。
我必须承认,我对这一整个概念进行了一些努力,但仔细阅读“How to Write Go”和代码组织部分包含了有关go命令如何工作的信息。< / p>
答案 3 :(得分:0)
解决方法是从.bash_profile中删除GOROOT。然后go命令将它安装到您的GOPATH目录。 奇怪的是:当我再次在我的.bash_profile中设置GOROOT并创建一个新的shell时,它也可以工作。