登录
首页 >  Golang >  Go问答

去除 go get 的依赖检查的方法是什么?

来源:stackoverflow

时间:2024-03-26 22:00:35 261浏览 收藏

本文探讨了在使用 Go 获取依赖项时绕过依赖检查的方法。当网络无法访问官方 Golang 存储库时,这些检查会不必要地消耗构建时间。通过删除现有的依赖包或更改其原始远程存储库,用户可以禁用这些检查并直接从替代源获取依赖项。本文分享了两种实现这一目标的方法,适用于无法访问官方 Golang 存储库的情况。

问题内容

当我执行 go get -u github.com/spf13/viper 时,它有一个依赖项 golang.org/x/sys。它将自动执行 cd ${gopath}/src/golang.org/x/sys ; git pull --ff-only

这实在是多余的没有用。

我的网络无法访问 golang.org/x/sys。所以我已经使用了 github.com/golang/sys 并将其放入我的 gopath/src/golang.org/x 中。这意味着自动检查(cd ${gopath}/src/golang.org/x/sys ; git pull --ff-only) 的进度(go get -u github.com/spf13/viper) 应该完全消除,因为它卡住了我的詹金斯部署时间。

超过 90% 的 jenkins 部署时间都浪费在诸如此类的检查中

cd ${gopath}/src/golang.org/x/sys; git pull --ff-only

cd ${gopath}/src/golang.org/x/text; git pull --ff-only

...

这是我的詹金斯日志的一部分:

# cd /home/tonnn/go/src/golang.org/x/sys; git pull --ff-only
fatal: unable to access 'https://go.googlesource.com/sys/': Failed connect to go.googlesource.com:443; Connection timed out
package golang.org/x/sys/unix: exit status 1

# cd /home/tonnn/go/src/golang.org/x/text; git pull --ff-only
fatal: unable to access 'https://go.googlesource.com/text/': Failed connect to go.googlesource.com:443; Connection timed out

那么,有没有办法只获取 viper 但不检查其依赖项?

viper只是一个例子来说明我的问题。我敢打赌你们大多数人都遇到过这种问题。

我使用的是 go 1.9。


解决方案


不好意思自己回答这个问题,但我确实找到了解决方案。

${gopath}/src/golang.org/x/sys在你从github.com/golang/sys获取之前已经存在时,它会跳转到这个阶段,并导致当你执行git远程-v时它将列出来源 https://go.googlesource.com/sys fetch/push。这正是导致我卡住 fetch googlesource.com/sys time out 的原因。

好的,现在有两种方法可以修复它。

第一种方法,删除现有的包并使其完全从 github.com/golang/sys 获取。 rm -rf ${gopath}/src/golang.org/x/sys。在jenkins shell作业之后,其git远程将正确转换为https://github.com/golang/sys

第二种方法,更改其原始远程。

cd ${GOPATH}/src/golang.org/x/sys
git remote remove origin
git remote add origin https://github.com/golang/sys.git

希望对大家有帮助。

到这里,我们也就讲完了《去除 go get 的依赖检查的方法是什么?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>