“go get”命令在 shell 脚本中运行时不会生成 bin 文件夹

我已经安装了 go 包。当我转到实例(VM)并 go get github.com/linkedin/Burrow从终端/cmd运行命令时,它正在下载用户主目录下的“src”和“bin”文件夹。但是当我通过在 shell 脚本中设置 GOPATH 来运行相同的命令时,它只是下载“src”文件夹而不生成“bin”文件夹。


SOURCE_DIR="/opt/burrow"

export GOPATH=$SOURCE_DIR/go

go get $BURROW_REPO 

我错过了什么吗?


慕勒3428872
浏览 392回答 3
3回答

ibeautiful

使用go install命令(编译和安装包和依赖项)。该命令下载并构建src到.$GOPATH$GOBIN

吃鸡游戏

这里发生了很多事情。您混淆的第一点是既不下载“src”也不go get 下载“bin”:Go 包总是只包含源代码,并且它们通常在文件和目录层次结构中不包含“src”目录。相反,这些目录是 Go 工具链的产物。混淆的第二点是,从 Go 1.8 开始,Go 工具链使用环境变量的回退值(GOPATH如果未设置),并且在类 Unix 系统上,它默认为“home”目录下名为“go”的目录执行go命令的用户。如果此目录丢失,工具链将创建它。因此,我对您的问题的抨击是您有某种权限问题:当GOPATH未设置时,使用“$HOME/go” -$HOME对于当前用户扩展为任何值;当您手动设置时GOPATH,某些东西会阻止在$GOPATH.还有另一种可能性:您还设置了GOBIN环境变量,该变量在设置时会覆盖用于安装由go install(and go get) 构建的二进制文件的常用位置。您可以研究 的输出go help environment以阅读有关该主题的更多信息。在任何一种情况下,最明智的前进路径是go install使用-x命令行选项运行并查看命令尝试将生成的可执行映像放在哪里,以及失败的原因(如果有的话)。您可以研究该主题的输出go help install并go help build阅读更多内容。您也可以考虑针对您的特定情况强制使用 Go 模块:GO111MODULES=on go get github.com/linkedin/Burrow对于您的用例,运行速度会快五倍。一定要先研究go help modulesand的输出go help mod-get。

哈士奇WWW

bin该命令src不会自动为您创建一个或多个文件夹。go get以下是在 go 中创建新项目的标准步骤,假设这是您第一次在 go 中创建项目:在您的工作区目录下,创建一个项目目录,例如“project1”bin、src 目录。设置 GOPATH,GOBIN:export GOPATH=~/workspace/project1/export GOBIN=~/workspace/project1/bin现在,如果您只需要源代码,请执行go get github.com/linkedin/Burrow 或如果您需要二进制文件,请执行go install github.com/linkedin/Burrow二进制文件将存储在 ~/workspace/project1/bin 下,源代码存储在 ~/workspace/project1/ 下如果您通过 make 文件或终端创建项目,则相同的步骤将适用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go