Golang弃用go get工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang弃用go get工具相关的知识,希望对你有一定的参考价值。

参考技术A 由于golang发布了新版本1.17.1,你可能会在使用go get -u安装包时得到这个错误。

例如:在安装goose包时使用:

返回如下错误:

go get在g.mod中同时用于更新依赖和安装命令。这种组合很混乱,使用起来也很不方便,因为开发人员不想同时进行更新和安装。

随着1.17.1版本的发布不再支持go get命令。那么以后如何安装依赖包呢?

1、根据文档,如果要在当前模块的上下文中安装可执行文件时,使用go install不带版本后缀。如下所示:

这个命令适用于安装当前目录或父目录中go.mod定义的版本要求和其他命令。
2、要安装可执行文件同时忽略当前模块go.mod,使用go install带上版本后缀例如:@v1.2.3 或@latest

因此变化在于:使用install替换get,去除-u在包URL末尾添加@latest。或者对于旧版本不是最新版本情况,在包URL的末尾添加指定版本。

现在可以成功安装。

https://golang.org/doc/go-get-install-deprecation

go get golang.org被墙问题解决

go get golang.org被墙问题解决

今天在下载golang.org/x/image/tiff的时候出错

> go get -v golang.org/x/image/tiff
Fetching https://golang.org/x/image/tiff?go-get=1
https fetch failed: Get https://golang.org/x/image/tiff?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
package golang.org/x/image/tiff: unrecognized import path "golang.org/x/image/tiff" (https fetch: Get https://golang.org/x/image/tiff?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

网上看了一下,大致是由于墙的问题。

网上的方式大致有两种,一种是使用golang.org在github上的镜像,比如https://github.com/golang/image

在gopath目录下手动创建src/golang.org/x/, 然后直接使用git clone https://github.com/golang/image 到 src/golang.org/x/image目录

但是由于我最终希望下的是qor项目,它依赖非常多的golang.org/x/的项目,一个个这么做也是够累人的。

于是选择了第二个方法,设置proxy。

设置session的http_proxy

FQ软件搭建在自己机器上, 使用端口61745, 先设置当前session使用的http_proxy

export http_proxy="http://127.0.0.1:61745" export https_proxy=$http_proxy

设置完成之后,但是还是出现问题:

go get -v golang.org/x/image/tiff
Fetching https://golang.org/x/image/tiff?go-get=1
Parsing meta tags from https://golang.org/x/image/tiff?go-get=1 (status code 200)
get "golang.org/x/image/tiff": found meta tag get.metaImport{Prefix:"golang.org/x/image", VCS:"git", RepoRoot:"https://go.googlesource.com/image"} at https://golang.org/x/image/tiff?go-get=1
get "golang.org/x/image/tiff": verifying non-authoritative meta tag
Fetching https://golang.org/x/image?go-get=1
Parsing meta tags from https://golang.org/x/image?go-get=1 (status code 200)
golang.org/x/image (download)
# cd .; git clone https://go.googlesource.com/image /Users/yejianfeng/Documents/gopath/src/golang.org/x/image
Cloning into '/Users/yejianfeng/Documents/gopath/src/golang.org/x/image'...
fatal: unable to access 'https://go.googlesource.com/image/': Failed to connect to go.googlesource.com port 443: Operation timed out
package golang.org/x/image/tiff: exit status 128

设置git的http_proxy

大致再搜了一下,是git的http_proxy没有设置好。

于是做了一下设置:

git config --global http.proxy http://127.0.0.1:61745

终于可以了

go get -v golang.org/x/image/tiff
Fetching https://golang.org/x/image/tiff?go-get=1
Parsing meta tags from https://golang.org/x/image/tiff?go-get=1 (status code 200)
get "golang.org/x/image/tiff": found meta tag get.metaImport{Prefix:"golang.org/x/image", VCS:"git", RepoRoot:"https://go.googlesource.com/image"} at https://golang.org/x/image/tiff?go-get=1
get "golang.org/x/image/tiff": verifying non-authoritative meta tag
Fetching https://golang.org/x/image?go-get=1
Parsing meta tags from https://golang.org/x/image?go-get=1 (status code 200)
golang.org/x/image (download)
golang.org/x/image/tiff/lzw
golang.org/x/image/tiff

也可以很方便使用 go get -u 来下载项目的依赖了。

取消

session的http_proxy是关闭session之后会取消的。

但是git的http.proxy这里是设置的全局的,我们下载完成之后,希望进行取消的话,执行操作:

git config --global --unset http.proxy

后记

据说现在有

参考文档

git 设置和取消代理

以上是关于Golang弃用go get工具的主要内容,如果未能解决你的问题,请参考以下文章

【GoLang】GO命令中go get拉取库卡住、慢的解决方法

Golang开发工具

[译]golang 1.8工具链改进

golang项目依赖管理工具go vendor,go mod

golang项目依赖管理工具go vendor,go mod

golang版本管理工具GO111MODULE