Rumah >pembangunan bahagian belakang >Golang >Penyelesaian: Pakej foo tiada dalam GOROOT
editor php Baicao membawakan anda penyelesaian kepada masalah "pakej foo tiada di GOROOT". Apabila kami mengaturcarakan dalam bahasa Go, kadangkala kami menghadapi gesaan ralat sedemikian. Ralat ini biasanya bermaksud bahawa kami cuba mengimport pakej, tetapi pakej itu tidak berada dalam direktori pemasangan bahasa Go (GOROOT). Dalam artikel ini, kami akan memperkenalkan anda secara terperinci cara menyelesaikan masalah ini supaya kod Go anda boleh mengimport pakej yang diperlukan dengan lancar.
Saya cuba menyusun projek Go saya, tetapi cara untuk membetulkan ralat kompilasi tidak jelas. Contoh mudah berikut.
Dad6a68db90e55e62259c35b03c780c3Sekarang saya guna make dep
(与 Makefile
,如下)构建 go.mod
并尝试获取所有依赖项,但这并没有获取它们,因为我一直看到 package foo is not in GOROOT
salah.
<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>
Ini milik saya~/.bashrc
, ia mengeksport beberapa pembolehubah persekitaran go yang berkaitan.
<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>
Ini dijana oleh 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>
Ini yang saya nampak ketika 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)
Jadi mari cuba muat turun terus menggunakan go get
dan sudo untuk menyelesaikan sebarang masalah kebenaran yang berpotensi...
<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>
go
二进制文件位于 ~/bin/go
saya sudah masuk.
Apakah cara paling berkesan untuk mendapatkan/menentukan kebergantungan dalam Makefile
saya (tanpa menyenaraikan sub-kebergantungan yang tidak berkesudahan) dan membuat projek ini disusun? Saya ingin membetulkan semua isu kompilasi yang disenaraikan di atas.
RTFM bukan jawapannya. RTFM menyediakan pautan terus ke dokumen sah.
Tajuk soalan (dan teks soalan asal) menyebut GOROOT
GOROOT
. Cerpen, pemasangan Go anda nampaknya rosak...betulkan:
cd /usr/local
cd ~/bin
ln -s /usr/local/go/bin/go go
ln -s /usr/local/go/bin/gofmt gofmt
cd
ke dalam direktori projek anda dan bina cara anda menyediakannya cd
放入您的项目目录中,并按照您设置 Makefile
. Ia sepatutnya berfungsi sekarang. Atas ialah kandungan terperinci Penyelesaian: Pakej foo tiada dalam GOROOT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!