下载后如何安装go包?
Posted
技术标签:
【中文标题】下载后如何安装go包?【英文标题】:How to install go package after downloading? 【发布时间】:2019-09-28 19:43:30 【问题描述】:我运行了这个:
cd $GOPATH && go get -u github.com/zricethezav/gitleaks
令人困惑的是,我现在有了这个:
$GOPATH/
src/
github.com/
gitleaks/
但是没有bin/
文件夹...我本来希望在这里看到 bin 文件夹:$GOPATH/bin
我做错了吗?如何安装软件包以显示二进制文件?我试着跑了:
go install github.com/zricethezav/gitleaks
但安装后我看不到bin/
文件夹...
go env
的输出如下所示:
GOARCH="amd64"
GOBIN="/Users/alex/go/bin"
GOCACHE="/Users/alex/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/alex/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/st/159q4vsd64b69_x99dtzzt6m0000gn/T/go-build133179815=/tmp/go-build -gno-record-gcc-switches -fno-common"
【问题讨论】:
您设置了GOBIN
吗?您是否尝试使用-v
或-x
来查看输出是什么? github.com/gitleaks/
!= github.com/zricethezav/gitleaks
,所以我不知道你怎么去前者。
看起来你的 go install
包名有一个无关的前缀 src/
。请记住,$GOPATH/src
是存储包源的目录。实际的包名是路径名中$GOPATH/src
的一部分。
是的,我刚刚发布了一个半答案,也许有帮助
【参考方案1】:
在go get
之后,gitleaks 可执行文件应该在$GO_PATH\bin
目录中,而不是在$GO_PATH\src...\gitleaks
中。
看到这个:https://pocketgophers.com/go-install-vs-go-build/
【讨论】:
【参考方案2】:我在 MacOS 上使用 brew install go
安装了 golang,这显然没有将主二进制文件放入 /usr/local/go
,这就是我的 go get
命令失败的原因。
所以我没有使用 brew,而是通过以下方式安装:https://golang.org/doc/install?download=go1.12.5.darwin-amd64.pkg
使用 .pkg 文件安装后,/usr/local/go
中有文件,所以我的go get
命令起作用了。
我的猜测是 homebrew 将 go 二进制文件放在与 /usr/local/go
不同的位置,这有点麻烦,但我明白为什么。
【讨论】:
【参考方案3】:如果 $GOPATH 不是 go 的根目录,我认为您必须手动创建 bin 文件夹。我已经手动创建了 $GOPATH/bin 文件夹并且它工作正常。
【讨论】:
GOPATH 永远不应该是 go 的根目录。如果是,则会产生错误。以上是关于下载后如何安装go包?的主要内容,如果未能解决你的问题,请参考以下文章