Получение ошибки 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 для хранения модуля загрузки) не удастся, поскольку нет возможности отслеживать разные версии одного и того же модуля.