root@kali:~/subfinder# go build
main.go:15:2: cannot find package
"github.com/subfinder/subfinder/libsubfinder/helper" in any of:
/usr/lib/go-1.11/src/github.com/subfinder/subfinder/libsubfinder/helper
(from $GOROOT)
/root/go
/src/github.com/subfinder/subfinder/libsubfinder/helper (from $GOPATH)
main.go:16:2: cannot find package "github.com/subfinder/subfinder/subf" in
any of:
/usr/lib/go-1.11/src/github.com/subfinder/subfinder/subf (from $GOROOT)
/root/go
/src/github.com/subfinder/subfinder/subf (from $GOPATH)
这是我的路径版本:
root@kali:~# go version
go version go1.11.4 linux/386
我的Go环境:
root@kali:~# go env
GOARCH="386"
GOBIN="/root/go_projects/bin"
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="386"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go
"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/go-1.11"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go-1.11/pkg/tool/linux_386"
GCCGO="gccgo"
GO386="387"
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 -m32 -pthread -fmessage-length=0 -fdebug-prefix-
map=/tmp/go-
build284184378=/tmp/go-build -gno-record-gcc-switches"
我的简历
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n || true
export PATH=$PATH:/usr/local/go/bin
export GOPATH="$HOME/go_projects"
export GOBIN="$GOPATH/bin"
答案1
Golang 对于你的源代码必须位于哪些目录有相当的固执。(然而,它通常不会给你一个有用的或可操作的错误消息。)
无论如何,如果您的包名为github.com/subfinder/subfinder
,那么为了构建它,您需要将其源存储在 下$GOPATH/src/github.com/subfinder/subfinder
,在您的情况下将是/root/go/src/github.com/subfinder/subfinder
(来自环境列表,而不是.profile
。)
确保将其签出到正确位置的一种方法是使用go get
来获取它(并可选择构建/安装它。)使用go get
该-d
选项将简单地下载源代码,因此您可以在需要时修改它们并构建它们在单独的步骤中执行此操作。
$ go get -d github.com/subfinder/subfinder
此命令会将其获取到您的第一个目录中$GOPATH
(实际上可以是由 分隔的目录列表:
,类似于$PATH
工作方式,在不太可能的情况下,您想要搜索包的多个基本目录。)
GOPATH="/root/go"
在您的帖子中,环境列表(表示)和.profile
(表示)之间也存在脱节GOPATH="$HOME/go_projects"
。我想这是因为您列出了.profile
非 root 用户的 ,而您正在运行 并将go build
环境列出为根?或者,也许您有另一个问题导致您.profile
不被读取,例如不是登录 shell,或者您有另一个配置文件,例如.bash_profile
哪个配置文件优先,等等。
看来您在$GOPATH
root 设置中也遇到了尾随换行符的问题(您可以看到双引号仅在第二行结束),这可能导致其中一些问题......所以可以肯定的是,您也应该尝试解决这个问题。