Ошибка при компиляции golang после перехода на centos

Я переносил свои программы Golang с Windows на Centos 7.

Он отлично работал в Windows
, но когда я пытался скомпилировать в Centos, я получаю такие ошибки, как

main.go:20:3: cannot find package "github.com/BurntSushi/toml" in any of:
        /usr/local/go/src/github.com/BurntSushi/toml (from $GOROOT)
        /root/work/src/github.com/BurntSushi/toml (from $GOPATH)
main.go:15:3: cannot find package "github.com/dgrijalva/jwt-go" in any of:
        /usr/local/go/src/github.com/dgrijalva/jwt-go (from $GOROOT)
        /root/work/src/github.com/dgrijalva/jwt-go (from $GOPATH)
main.go:16:3: cannot find package "github.com/gwlkm_service/config" in any of:
        /usr/local/go/src/github.com/gwlkm_service/config (from $GOROOT)
        /root/work/src/github.com/gwlkm_service/config (from $GOPATH)

новичок в Centos, так что не знаю, что делать


person arsaphone    schedule 30.12.2019    source источник
comment
Используете ли вы какое-либо управление зависимостями Go, например dep или go module?   -  person Wanda Ichsanul Isra    schedule 30.12.2019


Ответы (2)


похоже, вы настроили GOPATH, без модуля Go вы можете использовать go get [package path] для загрузки импортированных пакетов.

go get github.com/BurntSushi/toml
go get github.com/dgrijalva/jwt-go
go get github.com/gwlkm_service/config
person beiping96    schedule 30.12.2019
comment
если бы я спросил, где система сохраняет файл после перехода? - person arsaphone; 30.12.2019
comment
в $GOPATH/src - person beiping96; 30.12.2019
comment
о да спасибо! есть ли другой способ запустить этот main.go в качестве фонового процесса в Windows? - person arsaphone; 30.12.2019

Точно

ваша установка go на сервере выглядит как /usr/local/go, а ваш проект находится в /root/work, поэтому все ваши зависимости должны быть либо в /root/work/src, либо в /usr/local/go/src

Теперь приступайте к действию, проверьте свой GOPATH с запуском echo $GOPATH, предполагая, что он автоматически установлен на /usr/local/go/src Если нет, то следуйте - Как установить переменную среды GOPATH в Ubuntu? Какой файл я должен редактировать?

Если все ок то в своей папке запускаем go mod init

это создаст файл мода, который поможет вам в дальнейших установках изучить - https://blog.golang.org/using-go-modules

затем запустите команды go get, как указано выше, @beiping96 сказал

go get github.com/BurntSushi/toml go get github.com/dgrijalva/jwt-go go get github.com/gwlkm_service/config

ПРИМЕЧАНИЕ. После завершения вышеуказанного процесса вы сгенерируете файл модулей go (такой же, как package.json), и в будущем вам не нужно будет заботиться о зависимостях.

person anshuVersatile    schedule 30.12.2019
comment
Хорошо, сэр, спасибо. любой способ запустить main.go в качестве фонового процесса? - person arsaphone; 30.12.2019
comment
используйте pm2 или используйте nohup или добавьте & в конце команды, например go run main.go & - person anshuVersatile; 30.12.2019