簡體   English   中英

“運行”時出現錯誤“Package ... is not in GOROOT”

[英]Error “Package … is not in GOROOT ” when “go run”

首先,我想說謝謝你閱讀我的主題。 我是 Golang 的新手,很高興收到您的幫助。
我正在為php-fpm-exporter使用 golang ( https://github.com/hipages/php-fpm_exporter )
我的環境go env環境

GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/toandp99/.cache/go-build"
GOENV="/home/toandp99/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/toandp99/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/toandp99/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/toandp99/local/go/pkg/tool/linux_amd64"
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-build100112555=/tmp/go-build -gno-record-gcc-switches"

當我嘗試php-fpm-exporter

toandp99@toandp99-x555uj:~/php-fpm_exporter$ ls
cmd                 Dockerfile  LICENSE   phpfpm       README.md
CODE_OF_CONDUCT.md  go.mod      main.go   PHP-FPM.pid  sonar-project.properties
config.sh           go.sum      Makefile  PHP-FPM.sh   test
toandp99@toandp99-x555uj:~/php-fpm_exporter$ ./PHP-FPM.sh start
Starting Monitoring FastCGI Process Manager...go: downloading github.com/spf13/cobra v0.0.7
go: downloading github.com/speps/go-hashids v2.0.0+incompatible
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading github.com/gosuri/uitable v0.0.4
go: downloading github.com/tomasen/fcgi_client v0.0.0-20180423082037-2bb3d819fd19
go: downloading github.com/fatih/color v1.9.0
go: downloading github.com/mattn/go-isatty v0.0.12
go: downloading golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/mattn/go-colorable v0.1.6
go: downloading github.com/prometheus/client_golang v1.5.1
go: downloading github.com/mattn/go-runewidth v0.0.8
go: downloading github.com/prometheus/common v0.9.1
go: downloading github.com/prometheus/client_model v0.2.0
go: downloading github.com/cespare/xxhash v1.1.0
go: downloading github.com/prometheus/procfs v0.0.10
go: downloading github.com/golang/protobuf v1.3.4
go: downloading github.com/cespare/xxhash/v2 v2.1.1
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/matttproud/golang_protobuf_extensions v1.0.1
cmd/server.go:29:2: package client_golang-master/prometheus is not in GOROOT (/home/toandp99/local/go/src/client_golang-master/prometheus)
cmd/server.go:30:2: package client_golang-master/prometheus/promhttp is not in GOROOT (/home/toandp99/local/go/src/client_golang-master/prometheus/promhttp)
cmd/root.go:29:2: package cobra-master is not in GOROOT (/home/toandp99/local/go/src/cobra-master)
cmd/root.go:27:2: package go-homedir is not in GOROOT (/home/toandp99/local/go/src/go-homedir)
cmd/root.go:28:2: package logrus-master is not in GOROOT (/home/toandp99/local/go/src/logrus-master)
cmd/root.go:26:2: package php-fpm_exporter/phpfpm is not in GOROOT (/home/toandp99/local/go/src/php-fpm_exporter/phpfpm)
cmd/root.go:30:2: package viper-master is not in GOROOT (/home/toandp99/local/go/src/viper-master)

在 bash 文件 (PHP-FPM.sh) 中,我運行此命令

go run main.go server --web.listen-address $PHP_FPM_WEB_LISTEN_ADDRESS --log.level=$PHP_FPM_LOG_LEVEL --phpfpm.scrape-uri $PHP_FPM_SCRAPE_URI --web.telemetry-path $PHP_FPM_WEB_TELEMETRY_PATH --phpfpm.fix-process-count = $PHP_FPM_FIX_PROCESS_COUNT

我不知道要修復這個錯誤:(
謝謝 <3

當您的項目不在GoPATH中解決此問題時,通常會發生此錯誤,請使用GO111MODULE=auto單擊此處查看詳細信息)

In Go, The Project is supposed to be at a specific location( GOPATH ) to solve this problem Go Modules come into the picture which helps us to run the go program even outside the go path. By Default, Go Language use GoPATH you can change it to GoModules by changing the environment variable GO11MODULE to either auto (will use GO Modules if your project is not inside GoPATH) or on (will always use GO Modules even if your project is at GOPATH )

NOTE: Looking at your project it looks like you have already initilized the Go Modules (presence of go.mod ) That's why I didn't suggest initializing go modules (which can be done by running go mod init )

在我的情況下,我在 docker 中有權限 GOROOT 問題,因為“go.mod”和“go.sum”文件不在正確的目錄位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM