Installation golang:去安装tries/usr/local而不是GOPATH
这是我最后一个问题的后续问题: 我已将Installation golang:去安装tries/usr/local而不是GOPATH,installation,go,local,Installation,Go,Local,这是我最后一个问题的后续问题: 我已将GOPATH设置为$HOME/prog/go/GOPATH,此路径包含三个目录: ~/prog/go/gopath$ ls bin pkg src 现在我尝试安装一个请求我运行的 go install 在源目录中。但是命令go install给了我 ~/prog/go/gopath/src/redis (go1)$ go install go install flag: open /usr/local/go/pkg/darwin_amd64/flag
GOPATH
设置为$HOME/prog/go/GOPATH
,此路径包含三个目录:
~/prog/go/gopath$ ls
bin pkg src
现在我尝试安装一个请求我运行的
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
~/prog/go/gopath/src/redis(go1)$go安装
go安装标志:open/usr/local/go/pkg/darwin_amd64/flag。a:权限被拒绝
~/prog/go/gopath/src/redis(go1)$echo$gopath
/前进/前进/前进路径
(其中
是有效路径)
问题1:go install
为什么不考虑$GOPATH
?
问题2:如何说服
go install
使用$GOPATH
?不确定如何进行安装,但它可能需要从std库生成程序包,但由于权限原因无法进行。你可以试试
cd /usr/local/go/src
sudo ./all.bash
这应该建立std库并运行测试,以确保一切正常
确保您有适当的权限在必要时读取和执行$GOROOT。就我个人而言,我只是从golang.org下载归档文件,并将其保存在~/local/go下,并适当地设置GOROOT。我认为您需要的命令是“go-get”: 将下载Go Redis库并将其放入$GOPATH/src目录 go install在您自己的源代码上执行编译和安装
我必须承认,我在这整个概念上挣扎了一段时间,但仔细重读“”和“代码组织”部分包含了您需要了解的关于go命令如何工作的内容。解决方案是从.bash\u配置文件中删除GOROOT。然后go命令将其安装到您的GOPATH目录中。
奇怪的是:当我再次在.bash_配置文件中设置GOROOT并创建一个新的shell时,它也能工作。这里有类似的问题。当我检查$GOROOT时,我发现所有的库都已经在那里构建好了。但出于某些原因,它试图重建所有的库。所以我只是做了个小把戏:
find /usr/lib/go/pkg/ -name "*.*" | sudo xargs touch
然后一切正常。我不确定我是否理解它的作用。到目前为止,我的go安装工作正常。从来没有出现过任何问题,甚至交叉编译也可以。你有权阅读/usr/local/go/pkg/darwin_amd64/flag.a吗?是的,我可以阅读
/usr/local/go/pkg/darwin_amd64/flag.a
作为我的主要用户,我也有同样的问题,并以root用户身份运行了/all.bash来修复它。不确定交易是什么:我对.a的权限是正确的,它似乎正在尝试重建已经构建的包。可能与时间戳有关。。。。顺便说一句:go-get
应该没有我尝试过的https://
。谢谢你的链接“如何写去”!GOPATH不是一个路径列表吗(类似于PATH)?如果我没记错的话,文档上就是这么说的。你确定你不是指GOROOT吗?GOROOT指向Go二进制文件的安装位置。GOPATH是一个工作区列表。由于$GOROOT/src和$GOROOT/pkg中的文件之间存在时间戳差异,此处有更多详细信息,pkg文件已被确定为过期,正在尝试重建。但是,由于用户无法写入它们,因此出现了一个“权限拒绝”错误。触摸每个.a文件可以解决问题。我运行的命令略有不同:find/usr/local/go-name“*.a”-exec touch-r`which go`{}\代码>
find /usr/lib/go/pkg/ -name "*.*" | sudo xargs touch