21

我在 Mac OS X 中安装了 Go 1.4。以前我有 Go 1.0。我将 GOROOT 和 PATH 设置如下,

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 安装在 '/usr/local/go/bin/go' 中。我将 GOPATH 设置为我的项目 src 目录。我可以在我的目录中运行 go 代码。但是当我尝试安装 gocql 时出现错误。

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

有人可以帮我吗?谢谢

编辑 1: @VonC 我也尝试了其他选项。我把GOROOT改成go安装的目录。但这没有帮助。我改变了 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$
4

4 回答 4

55

笔记:

GOROOT应该引用一个文件夹(安装 go 的地方),而不是go可执行文件本身

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin 

正如戴夫在评论中提到的那样,您根本不需要GOROOT在您的情况下进行设置。
看文章你不需要设置GOROOT,真的

GOPATH应该引用一个文件夹,您将在该文件夹下找到src和。(它不应该直接引用文件夹): 参见“如何编写 Go 代码 - 工作区pkgbinsrc

关于GOPATH

  • 尝试将其设置在您的~/.bashrc(使用export)中。
  • 检查您当前的 shell 是 bash (而不是另一个类似的fish
  • 检查输出go env

不要做 a sudo go get,因为用于sudo( root) 的环境变量与当前用户不同:

go get github.com/gocql/gocql

(或者你需要做 asudo -E bash -c 'go get github.com/gocql/gocql',但我怀疑你不需要root在这里)

请参阅sudo 警告

sudo当使用命令调用它们时,添加到这些位置的任何变量都不会反映sudo,重置环境和设置安全路径的默认策略(此行为在 中定义/etc/sudoers

于 2015-02-26T11:51:11.963 回答
2

您需要告知Go您工作区的位置。在本例中,我们将使用 $HOME/dev/go-workspace。

然后你需要知道你的 mac 是否将 zsh 或 bash 配置为 shell。

文件 ~/.zshrc 用于 zsh shell。zsh shell 是在 OS Big Sur 中引入的。

~/.bashrc 是用于预览操作系统版本的 bash shell,对于 linux 用户也是如此。

1:添加这些行以在 ~/.zsh 或 ~./bashrc 中导出所需的变量,具体取决于您的 shell。

对于从https://golang.org/doc/install下载的原始 pkg 安装的 go

export GOPATH=$HOME/dev/go-workspace
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

对于从家庭 brew 安装的 Go。(brew update 和 brew install golang)

export GOPATH=$HOME/dev/go-workspace
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

2:运行

# source ~/.zshrc 

或者

source ~./bashrc 

根据在步骤 #2 中插入的新变量更新您的 $PATH

3:然后创建您的工作区目录:

$ mkdir -p $GOPATH $GOPATH/src $GOPATH/pkg $GOPATH/bin

4:创建一个test.go,hello world

package main
import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

通过执行以下命令运行您的程序:

$ go run test.go

如果你想编译它并将它移动到 $GOPATH/bin,然后运行:

$ go install test.go

由于我们已将 $GOPATH/bin 添加到您的 $PATH 中,因此您可以在任何地方运行您的程序,只需键入 test :

$ test

如果一切正常,输出将是:

hello, world
于 2021-03-25T20:12:39.677 回答
1

tldr;

macos terminal: 
brew install go
edit ~/.zshenv
export GOROOT="/usr/local/Cellar/go/1.16.6/libexec"
export GOPATH="/Users/Shared/Development/go-workspace"
export PATH="$PATH:$GOPATH/bin"

Think of the GOPATH in terms of a configured workspace for the environment. GOROOT is the install point for the go language. Homebrew will symlink the bin commands to your /usr/local/bin. Add the $GOPATH to your PATH in order to find any go programs that you later install.

于 2021-07-29T11:33:04.977 回答
0

我在 MacOS 中设置 GOROOT 和 GOPATH 时遇到了很多问题,唯一对我有用的解决方案是以下解决方案:

将以下代码添加到您的~/.bashrc或者~/.profile如果您使用Oh My Zsh ~/.zshrc

export GOPATH=$HOME/go
export GOROOT=/usr/local/go

之后,在终端中运行以下命令:

source ~/.profile

如果您有任何不同的外壳,请将其替换为.profile.

Info: $HOME变量将指向您当前用户的目录。

信息 2: /usr/local/go是所有用户、go 文件和 bin 文件夹所在的位置。

将自定义 GOPATH 设置为工作目录:

要将您的GoLang项目存储在不同的文件夹中,您可以设置自定义路径。这是我的自定义 GOPATH,它指向我的 admin/Documents 文件夹中的 goWorkSpace 文件夹。

export GOPATH=$HOME/Documents/goWorkSpace
于 2021-03-23T18:46:40.317 回答