由于golang发布了新版本1.17.1,你可能会在使用go get -u安装包时得到这个错误。
例如:在安装goose包时使用:
$ go get -u github.com/pressly/goose/v3/cmd/goose
返回如下错误:
" go get:在go module模式中使用go get安装可执行文件已弃用。
用“go install pkg@version”代替。 欲了解更多信息,请参见https://golang.org/doc/go-get-install-deprecation 或者运行‘go help get’或‘go help install’。”
为何弃用go get
go get在g.mod中同时用于更新依赖和安装命令。这种组合很混乱,使用起来也很不方便,因为开发人员不想同时进行更新和安装。
随着1.17.1版本的发布不再支持go get命令。那么以后如何安装依赖包呢?
1、根据文档,如果要在当前模块的上下文中安装可执行文件时,使用go install不带版本后缀。如下所示:
go install example.com/cmd
这个命令适用于安装当前目录或父目录中go.mod定义的版本要求和其他命令。
2、要安装可执行文件同时忽略当前模块go.mod,使用go install带上版本后缀例如:@v1.2.3 或@latest
因此变化在于:使用install替换get,去除-u在包URL末尾添加@latest。或者对于旧版本不是最新版本情况,在包URL的末尾添加指定版本。
现在可以成功安装。