go build를 실행 중인 패키지를 찾을 수 없습니다.

go build를 실행 중인 패키지를 찾을 수 없습니다.
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

My 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환경 목록 (representation) 과 (representation) 사이의 연결 끊김도 있습니다 GOPATH="$HOME/go_projects". .profile루트가 아닌 사용자를 나열 하고 go build환경을 루트로 실행하고 나열하기 때문이라고 가정합니까? 아니면 .profile로그인 셸이 아니거나 다른 프로필이 있는 경우( .bash_profile어떤 프로필이 우선 적용되는지 등) 읽을 수 없게 만드는 또 다른 문제가 있을 수도 있습니다.

루트 설정에서 후행 개행에 문제가 있는 것 같습니다 $GOPATH(큰따옴표는 두 번째 줄에서만 끝나는 것을 볼 수 있습니다).가능한이러한 문제 중 일부가 발생하므로 이 문제도 해결해야 합니다.

관련 정보