Penyelesaian: Pakej foo tiada dalam GOROOT

WBOY
Lepaskan: 2024-02-09 10:48:07
ke hadapan
870 orang telah melayarinya

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.

Kandungan soalan

Saya cuba menyusun projek Go saya, tetapi cara untuk membetulkan ralat kompilasi tidak jelas. Contoh mudah berikut.

Dad6a68db90e55e62259c35b03c780c3

Sekarang 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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&#160;protected]/ssh/transport.go:8:2: package bufio is not in GOROOT (/home/me/src/bufio)
../../gobin/pkg/mod/github.com/mattn/[email&#160;protected]/noncolorable.go:4:2: package bytes is not in GOROOT (/home/me/src/bytes)
Salin selepas log masuk

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>
Salin selepas log masuk

Soalan

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.

Penyelesaian

  1. Muat turun pokok sumber Go yang sesuai untuk seni bina pemproses anda (biasanya amd64 untuk pemasangan Linux biasa) daripada go.dev/dl
  2. cd /usr/local
  3. Ekstrak tarball sebagai akar
  4. cd ~/bin
  5. ln -s /usr/local/go/bin/go go
  6. ln -s /usr/local/go/bin/gofmt gofmt
  7. Masukkan 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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!