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行目でのみ終了することがわかります)。可能これらの問題のいくつかが発生するため、この問題も解決する必要があります。