Heim >Backend-Entwicklung >Golang >Lösung: Paket foo ist nicht in GOROOT
php-Editor Baicao bietet Ihnen eine Lösung für das Problem „Paket foo ist nicht in GOROOT“. Wenn wir die Go-Sprachprogrammierung verwenden, stoßen wir manchmal auf solche Fehlermeldungen. Dieser Fehler bedeutet normalerweise, dass wir versuchen, ein Paket zu importieren, sich das Paket jedoch nicht im Installationsverzeichnis der Go-Sprache (GOROOT) befindet. In diesem Artikel stellen wir Ihnen detailliert vor, wie Sie dieses Problem lösen können, damit Ihr Go-Code die erforderlichen Pakete reibungslos importieren kann.
Ich versuche, mein Go-Projekt zu kompilieren, aber die Möglichkeit, den Kompilierungsfehler zu beheben, ist nicht offensichtlich. Es folgt ein vereinfachtes Beispiel.
Dad6a68db90e55e62259c35b03c780c3Jetzt verwende ich make dep
(与 Makefile
,如下)构建 go.mod
并尝试获取所有依赖项,但这并没有获取它们,因为我一直看到 package foo is not in GOROOT
falsch.
<code># filename: ~/myprojects/automate_things/Makefile GOOS=linux GO_SOURCE_FILE=automate_things.go GO_BINARY_FILE=automate_things GO_BIN_DIR=bin/ .SILENT: build .DEFAULT_GOAL := build build: -make fmt make dep go build $(GO_SOURCE_FILE) if [ "$(PLATFORM)" = "Linux" ]; then \ GOARCH=amd64 GOOS=linux go build -ldflags "-s -w" -o ./$(GO_BINARY_FILE) $(GO_SOURCE_FILE); \ elif [ "$(PLATFORM)" = "Darwin" ]; then \ GOARCH=amd64 GOOS=darwin go build -ldflags "-s -w" -o ./$(GO_BINARY_FILE) $(GO_SOURCE_FILE); \ fi .PHONY: build fmt: go fmt $(GO_SOURCE_FILE) .PHONY: fmt dep: -rm go.mod -rm go.sum go mod init automate_things go mod tidy go mod download .PHONY: dep </code>
Das ist meins~/.bashrc
, es exportiert mehrere relevante Go-Umgebungsvariablen.
<code># filename: ~/.bashrc # Build the default GOROOT (re-run the command as root) mkdir -p /usr/local/go export GOPROXY=https://proxy.golang.org mkdir -p ~/gobin/bin export GOPATH=~/gobin #export GO111MODULE=auto export PATH=$PATH:$GOPATH/bin </code>
Dies wird generiert von go.mod
,是我的Makefile
(make dep
)
<code>// go.mod module automate_things go 1.20 require ( github.com/gleich/logoru v0.0.0-20230101033757-d86cd895c7a1 github.com/melbahja/goph v1.4.0 ) require ( github.com/fatih/color v1.10.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-isatty v0.0.12 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/sftp v1.13.5 // indirect golang.org/x/crypto v0.6.0 // indirect golang.org/x/sys v0.5.0 // indirect ) </code>
Das habe ich gesehen, als make dep
$ make make[1]: Entering directory '/home/me/myprojects/automate_things' go fmt automate_things.go make[1]: Leaving directory '/home/me/myprojects/automate_things' make[1]: Entering directory '/home/me/myprojects/automate_things' rm go.mod rm go.sum go mod init automate_things go: creating new go.mod: module automate_things go: to add module requirements and sums: go mod tidy go mod tidy go: finding module for package github.com/melbahja/goph go: finding module for package github.com/gleich/logoru go: found github.com/gleich/logoru in github.com/gleich/logoru v0.0.0-20230101033757-d86cd895c7a1 go: found github.com/melbahja/goph in github.com/melbahja/goph v1.4.0 go mod download make[1]: Leaving directory '/home/me/myprojects/automate_things' ../../gobin/pkg/mod/golang.org/x/[email protected]/ssh/transport.go:8:2: package bufio is not in GOROOT (/home/me/src/bufio) ../../gobin/pkg/mod/github.com/mattn/[email protected]/noncolorable.go:4:2: package bytes is not in GOROOT (/home/me/src/bytes)
Also versuchen wir es direkt mit go get
und sudo herunterzuladen, um mögliche Berechtigungsprobleme zu lösen...
<code>$ sudo /home/me/bin/go get github.com/melbahja/goph go: downloading github.com/melbahja/goph v1.4.0 go: downloading github.com/pkg/errors v0.9.1 go: downloading github.com/pkg/sftp v1.13.5 go: downloading golang.org/x/crypto v0.6.0 go: downloading github.com/kr/fs v0.1.0 go: downloading golang.org/x/sys v0.5.0 github.com/melbahja/goph imports context: package context is not in GOROOT (/usr/local/go/src/context) github.com/melbahja/goph imports errors: package errors is not in GOROOT (/usr/local/go/src/errors) github.com/melbahja/goph imports </code>
Mein go
二进制文件位于 ~/bin/go
ist da.
Was ist der effizienteste Weg, Abhängigkeiten in meinem Makefile
abzurufen/anzugeben (ohne endlose Unterabhängigkeiten aufzulisten) und dieses Projekt kompilieren zu lassen? Ich möchte alle oben aufgeführten Kompilierungsprobleme beheben.
RTFM ist nicht die Antwort. RTFM bietet direkte Links zu gültigenDokumenten.
Der Fragetitel (und der ursprüngliche Fragetext) erwähnt GOROOT
GOROOT
. Kurz gesagt, Ihre Go-Installation scheint kaputt zu sein... beheben Sie das Problem:
cd /usr/local
cd ~/bin
ln -s /usr/local/go/bin/go go
ln -s /usr/local/go/bin/gofmt gofmt
cd
in Ihr Projektverzeichnis und erstellen Sie es so, wie Sie es eingerichtet haben cd
放入您的项目目录中,并按照您设置 Makefile
. Es sollte jetzt funktionieren. Das obige ist der detaillierte Inhalt vonLösung: Paket foo ist nicht in GOROOT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!