对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《我如何解决 go build 和 go install 不起作用的问题》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
问题内容大家好,决定下载一个工具 - https://github.com/charlie-belmer/nosqli(在 go 上编写)用于我的渗透测试练习(它在我的 /home/user 中创建了 nosqli 目录)。 并发现它不起作用。所以我开始解决这个问题并陷入困境:
当我执行“go install
”时,它没有执行任何操作,我的意思是没有错误消息等。现在它给了我:
go install main.go:19:8: cannot find package "github.com/charlie-belmer/nosqli/cmd" in any of: /usr/lib/go-1.17/src/github.com/charlie-belmer/nosqli/cmd (from $goroot) /root/go/src/github.com/charlie-belmer/nosqli/cmd (from $gopath)
与 go build 的情况相同。
**# go version
go version go1.17.6 linux/amd64**
**go env** (output):
GO111MODULE="off"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go-1.17"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go-1.17/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3159993699=/tmp/go-build -gno-record-gcc-switches"
我以前从未使用过 go,并且完全陷入困境,尝试阅读指南但没有结果。
正确答案
您是如何下载该工具的?您是否从 github 克隆了存储库并尝试构建它?如果您只想使用该工具,为什么不在这里获取适用于您的操作系统的二进制版本:https://github.com/Charlie-belmer/nosqli/releases/tag/v0.5.4?
如果您确实想构建它,则需要克隆存储库:
git clone https://github.com/charlie-belmer/nosqli.git /some/dir
然后运行
cd /some/dir
go build -o nosqli .
go
工具将获取所有依赖项作为进程的一部分并构建二进制文件(命名为 -o
之后的任何内容 - 在本例中为 nosqli
),根本不需要运行 go install
。下载依赖项并构建完成后,nosqli
二进制文件应该位于 /some/dir
中。
到这里,我们也就讲完了《我如何解决 go build 和 go install 不起作用的问题》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!