go - govendor 不导入较新的版本
问题描述
旧版本的golang.org/x/net/html存在漏洞。哎呀!更好地升级软件包。两年前,我们使用govendor建立了 Shopify 集成项目;所以让我们使用govendor来升级:
ip-192-168-3-40:Shopify-Gateway username$ git diff
ip-192-168-3-40:Shopify-Gateway username$ govendor fetch golang.org/x/net/html
ip-192-168-3-40:Shopify-Gateway username$ git diff
ip-192-168-3-40:Shopify-Gateway username$
戈万多什么都没做!这是vendor.json
后面的文件fetch
:
{
"checksumSHA1": "vqc3a+oTUGX8PmD0TS+qQ7gmN8I=",
"path": "golang.org/x/net/html",
"revision": "d997483c6db05184c79c182674d01f1e7b7553ae",
"revisionTime": "2017-05-30T13:01:13Z"
},
这是一个相当古老的修订版,肯定比 2018 年 9 月 25 日发布的漏洞修复更早。Govendor 是一个较旧的软件包,似乎不再维护。我必须更换govendor吗?有天然替代品吗?还是我做错了什么阻止我更新我的包?
版本信息:
ip-192-168-3-40:Shopify-Gateway username$ govendor --version v1.0.9
ip-192-168-3-40:Shopify-Gateway username$ go version
go version go1.13.1 darwin/amd64
编辑:许多人建议使用 go 模块。我们不能使用它们!我们依赖于未版本化的依赖项,当我们尝试将包升级到 go modules 时,此依赖项会下降到较低版本,从而引入数据库安全漏洞。我需要能够就地更新软件包,因为它们是由 govendor 安装的。
我还尝试安装要使用的 govendor 软件包的特定版本号:
ip-192-168-3-40:Shopify-Gateway username$ govendor fetch golang.org/x/net/html@d26f9f9a57f3fab6a695bec0d84433c2c50f8bbf
ip-192-168-3-40:Shopify-Gateway username$ git diff
ip-192-168-3-40:Shopify-Gateway username$
为什么 govendor 不更新我的包裹?
解决方案
您必须迁移到go modules
. 首先,创建一个新模块。通过这些简单的步骤,您将能够初始化一个模块并创建go.mod
文件 [ https://stackoverflow.com/a/57944766/9361998]。
比你必须输入:
go mod init YOUR_REPOSITORY_NAME
go clean
go mod download # wait until dependencies are downloaded
go build #be sure that the code compile
go mod tidy #prune unnecessary dependencies
go get -u ./... #update dependencies
请注意,使用最新命令将 dep 更新到最新的 MINOR 补丁,请务必go.mod
使用最新的 MAJOR 版本更改文件
编辑
另一种方法是在您的GOPATH
使用中下载模块go get -v -u github.com/repository_name/module_name
。通过这种方式,模块将下载到您的GOPATH
.
推荐阅读
- javascript - 如何使用 cos-bilkent 布局控制断开节点的位置
- laravel - 如何在 laravel 黄昏中测试 jquery 脚本
- python - 将字符串传递给 RGB 颜色格式
- mysql - 什么相当于 MySQL 的 ST_DWithin (PostGIS - PostgreSQL)?
- database - SQLITE 编程
- javascript - 窗口关闭时如何获取关闭事件?
- java - 如何修复 Apache Ignite 中的“无法初始化类 org.apache.ignite.IgniteJdbcThinDriver”错误?
- javascript - 赛普拉斯请求是异步的——但是新对象的创建呢?
- python - Tkinter 回调中的异常:Bool 类型对象不可调用
- android - 在 Fragment getActivity() 有时返回 null