更新时间:2023-02-22 19:35:31
注意:
GOROOT
应该引用一个文件夹(安装go的地方),而不是 go
可执行文件本身
export GOROOT = / usr / local / go
export PATH = $ PATH:$ GOROOT / bin
正如戴夫在评论中提到的,你不应该有在你的情况下设置 GOROOT
。
查看文章你不需要设置 GOROOT
,真的是 。
GOPATH
sh应该引用一个你可以找到 src
, pkg
和 bin $ c的文件夹$ C>。 (它不应直接引用
src
文件夹):
请参阅如何编写Go Code - Workspace
关于 GOPATH
$:
〜/ .bashrc
中(使用 export
)。 fish
) go env的输出
。不要执行 sudo go get
,作为用于 sudo $ c的环境变量$ c>(
root
)不会与当前用户相同:
go get github.com/gocql/gocql
(或 sudo -E bash -c'go get github.com/gocql/gocql' $ c> ,但我怀疑你不需要 root
这里)
S ee sudo caveat :
使用
sudo
命令调用这些位置时,不会反映添加到这些位置的任何变量,如sudo
具有重置环境和设置安全路径的默认策略(此行为在/ etc / sudoers
中定义)I installed Go 1.4 in Mac OS X. Previously I had Go 1.0. I set the GOROOT and PATH as follows,
Dineshs-MacBook-Air:go-cassandra Dany$ which go /usr/local/go/bin/go Dineshs-MacBook-Air:go-cassandra Dany$ export GOROOT=/usr/local/go/bin/go Dineshs-MacBook-Air:go-cassandra Dany$ export PATH=$PATH:$GOROOT/bin
Go is installed in '/usr/local/go/bin/go'. And I set the GOPATH as my project src directory. I am able to run go code inside my directory. But when I try to install gocql I am getting error.
Dineshs-MacBook-Air:go-cassandra Dany$ sudo go get github.com/gocql/gocql package github.com/gocql/gocql: cannot download, $GOPATH not set. For more details see: go help gopath
Could anyone help me on this? Thank you
EDIT 1: @VonC I tried the other option as well. I changed the GOROOT to the directory where go is installed. But it didn't help. And I changed the GOPATH.
Dineshs-MacBook-Air:go-cassandra Dany$ export GOROOT=/usr/local/go Dineshs-MacBook-Air:go-cassandra Dany$ export PATH=$PATH:$GOROOT/bin Dineshs-MacBook-Air:go-cassandra Dany$ export GOPATH=/Users/Dany/Documents/FALL-2013-COURSES/Imp_Data_structures/workspace/go-cassandra Dineshs-MacBook-Air:go-cassandra Dany$ sudo go get github.com/gocql/gocql Password: package github.com/gocql/gocql: cannot download, $GOPATH not set. For more details see: go help gopath Dineshs-MacBook-Air:go-cassandra Dany$ echo $GOPATH /Users/Dany/Documents/FALL-2013-COURSES/Imp_Data_structures/workspace/go-cassandra Dineshs-MacBook-Air:go-cassandra Dany$ ls bin pkg src Dineshs-MacBook-Air:go-cassandra Dany$
Notes:
GOROOT
should reference a folder (where go is installed), not thego
executable itselfexport GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin
As Dave mentions in the comments, you should not have to set
GOROOT
at all in your case.
See the article You don’t need to setGOROOT
, really.
GOPATH
should reference a folder under which you will findsrc
,pkg
andbin
. (it should not reference directly thesrc
folder):
See "How to Write Go Code - Workspace"Regarding the
GOPATH
:
- try and set it in your
~/.bashrc
(usingexport
).- check that your current shell is a bash (and not another one like
fish
)- check the output of
go env
.Don't do a
sudo go get
, as the environment variable used forsudo
(root
) wouldn't be the same as the current user:go get github.com/gocql/gocql
(or you would need to do a
sudo -E bash -c 'go get github.com/gocql/gocql'
, but I suspect you don't needroot
here)See sudo caveat:
Any variables added to these locations will not be reflected when invoking them with a
sudo
command, assudo
has a default policy of resetting the Environment and setting a secure path (this behavior is defined in/etc/sudoers
)