Получение ошибки GOPATH "go: невозможно использовать синтаксис path@version в режиме GOPATH" в Ubuntu 16.04

Невозможно сделать go get git@github<user/repo> в моей папке $GOPATH. Получение этой ошибки

go: cannot use path@version syntax in GOPATH mode

Просто хочу понять, почему go get не работает, хотя $GOPATH настроен во время установки. Окружение убунту.

~/$ echo $GOPATH /home/user/go

7 ответов

Решение

Как вы уже заметили, вы должны использовать go get github.com/<user>/<repo>,

Сообщение об ошибке, которое вы увидели, исходит от новой функции, реализованной в go get для поддержки модулей Go - теперь вы также можете указать версию зависимости: go get github.com/<user>/<repo>@<version>, где version это тег git, использующий semver, например v1.0.2,

У меня была та же проблема и я решил установить конкретную переменную env export GO111MODULE=on в моем.zshrc(или.bashrc в зависимости от того, какую оболочку вы используете) и перезапустите оболочку, чтобы включить модули. Вы можете найти более подробную информацию здесь: https://github.com/golang/go/wiki/Modules

Я тоже столкнулся с этой проблемой. После некоторого поиска следующее работает с использованиемgo mod вместо того go get, которая является особенностью модулей Golang:

$ export GO111MODULE=on

$ go mod init <project name>

# go mod init HelloWorld
# or
# go mod init .

$ go mod download repo@version

# go mod download github.com/robfig/cron/v3@v3.0.0

Я получил эту ошибку с Go v1.14 при запуске $ go get github.com/<user>/<repo>@<version> в пустом проекте до того, как я инициализировал свой проект модулями.

Чтобы решить эту проблему, я создал go.mod файл, используя:

$ go mod init

Мне удалось повторно запустить команду get, которая загрузила пакет поставщика, обновила go.mod файл и создал go.sum файл.

Обновите версию, следуя инструкциям на странице https://gist.github.com/nikhita/432436d570b89cab172dcf2894465753.

Это сработало для меня!

Если вы получаете эту ошибку при попытке использовать модули, вам следует изменить dir на project, прежде чем идти get:

root@host:/# go get github.com/ibm-messaging/mq-golang/ibmmq@ff54c095001d81eed10615916a896512eb8d81ff
go: cannot use path@version syntax in GOPATH mode
root@host:/# cd myproject/
root@host:/myproject# ls go.mod 
go.mod
root@host:/myproject# go get github.com/ibm-messaging/mq-golang/ibmmq@ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging/mq-golang/ibmmq ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging/mq-golang ff54c095001d81eed10615916a896512eb8d81ff
go: finding github.com/ibm-messaging ff54c095001d81eed10615916a896512eb8d81ff

Возникла эта проблема, когда я попытался запустить команду в каталоге за пределами каталога, в котором инициализирован мод go. Чтобы загрузить модуль с определенной версией, go требуется файл go.mod, который может отслеживать несколько версий одного и того же модуля. Однако попытка загрузить модуль в любом другом месте за пределами каталога модуля go (где будет ссылка на GOPATH для хранения модуля загрузки) не удастся, поскольку нет возможности отслеживать разные версии одного и того же модуля.

Другие вопросы по тегам