Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation golang:去安装tries/usr/local而不是GOPATH_Installation_Go_Local - Fatal编程技术网

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