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

正しい場所にチェックアウトされたことを確認する1つの方法は、ステップの実行を使用してインポート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非rootユーザーをリストし、go build環境をrootとして実行してリストするためと仮定しますか?あるいは、.profileログインシェルでない場合、または他のプロファイルがある場合(.bash_profileどのプロファイルが優先されるかなど)、読み取れないようにする別の問題がある可能性があります。

ルート設定では、末尾の改行に問題があるようです$GOPATH(二重引用符は2行目でのみ終了することがわかります)。可能これらの問題のいくつかが発生するため、この問題も解決する必要があります。

関連情報