golang 在1.11版本开始增加modules的功能,解决包管理的问题,之前包管理方案废除了。这个方案感觉都几好,不过最近使用的时候。发觉都点问题,可能是我对它的理解不是很清晰。导致的出问题。
现在讲讲我遇到的问题。如果大家想跟着我的项目试验,请去
github下载并切换到这个commit。 这里我列一下我项目的go.mod的主要部分
require ( github.com/deepch/av v0.0.0-20160612005306-c437a98c9300 // indirect github.com/deepch/rtsp v0.0.0-20180827192050-70ae0abf31bd // indirect github.com/deepch/sample_rtsp v0.0.0-20180827191708-90250a0f88be // indirect github.com/gorilla/mux v1.7.1 // indirect github.com/pion/webrtc/v2 v2.0.9 // indirect )
目前项目有点问题,我需要升级下github.com/pion/webrtc/这个库的版本。升级这个库的版本有几个方面。
- 使用命令go get github.com/pion/webrtc/v2@v2.0.12
- 使用命令go get -u github.com/pion/webrtc/v2@v2.0.12
- 直接编辑go.mod文件,把版本号修改。
大家是否会觉得用以上三个方法结果都一样。我开始以为这个三个方法都一样的。不过后发觉他们直接还是有点不一样的。
方法1,go get github.com/pion/webrtc/v2@ v2.0.12 命令之后。go.mod文件只是修改了github.com/pion/webrtc/v2的版本号。go.sum增加了2.0.12依赖的包对应的新的版本库。
require ( github.com/deepch/av v0.0.0-20160612005306-c437a98c9300 // indirect github.com/deepch/rtsp v0.0.0-20180827192050-70ae0abf31bd // indirect github.com/deepch/sample_rtsp v0.0.0-20180827191708-90250a0f88be // indirect github.com/gorilla/mux v1.7.1 // indirect github.com/pion/webrtc/v2 v2.0.12 // indirect )
方法2. go get -u github.com/pion/webrtc/v2@ v2.0.12 命令后,go.mod文件多了很多依赖包。go.sum也出现了很多更新包。这些依赖包都是次级依赖的包的升级版本,可能是github.com/pion/webrtc库需要。都列在go.mod哪里了。
require ( github.com/deepch/av v0.0.0-20160612005306-c437a98c9300 // indirect github.com/deepch/rtsp v0.0.0-20180827192050-70ae0abf31bd // indirect github.com/deepch/sample_rtsp v0.0.0-20180827191708-90250a0f88be // indirect github.com/golang/mock v1.3.0 // indirect github.com/gorilla/mux v1.7.1 // indirect github.com/lucas-clemente/quic-go v0.11.1 // indirect github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect github.com/pion/datachannel v1.4.3 // indirect github.com/pion/dtls v1.3.4 // indirect github.com/pion/webrtc/v2 v2.0.12 // indirect github.com/stretchr/objx v0.2.0 // indirect golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284 // indirect golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c // indirect golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c // indirect golang.org/x/text v0.3.2 // indirect golang.org/x/tools v0.0.0-20190509014725-d996b19ee77c // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v2 v2.2.2 // indirect )
方法3。直接编辑go.mod,然后编译程序和或者运行,得到的结果是和方法1一样的。
现在来一条思考题:,如果命令是go get -u github.com/pion/webrtc/v2@ v2.0.9 版本号不变化。你会觉得go.mod会有变化么?
结果来了。
require ( github.com/deepch/av v0.0.0-20160612005306-c437a98c9300 // indirect github.com/deepch/rtsp v0.0.0-20180827192050-70ae0abf31bd // indirect github.com/deepch/sample_rtsp v0.0.0-20180827191708-90250a0f88be // indirect github.com/golang/mock v1.3.0 // indirect github.com/gorilla/mux v1.7.1 // indirect github.com/lucas-clemente/quic-go v0.11.1 // indirect github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect github.com/pion/datachannel v1.4.3 // indirect github.com/pion/dtls v1.3.4 // indirect github.com/pion/ice v0.2.6 // indirect github.com/pion/srtp v1.2.4 // indirect github.com/pion/webrtc/v2 v2.0.9 // indirect github.com/stretchr/objx v0.2.0 // indirect golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284 // indirect golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c // indirect golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c // indirect golang.org/x/text v0.3.2 // indirect golang.org/x/tools v0.0.0-20190509014725-d996b19ee77c // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v2 v2.2.2 // indirect )
二级依赖包都更新了。所以平时更新项目的依赖包要小心,最好别用go get -u来更新,只要用go get来更新具体某个依赖包就好了,带-u的会把次级的依赖都升价到新版本,不理会你直接引用的库是否有升级。这个问题不是很好的。因为有时候回归问题根源的时候,会把依赖包进行升级和降级处理进行查找一些问题。加了-u的选项,它把次级依赖包都升价了。不能很好地回归问题。
假设,你使用go get -u github.com/pion/webrtc/v2@v2.0.12升价了包,然后用go get github.com/pion/webrtc/v2@v2.0.9进行降级。其他依赖包也是被升价了。
所以大家以后升价依赖包,要不手动改文件。要不只用go get。千万别用go get -u了。要不然降级的时候就麻烦了。另外这个 go 的依赖包的升级是根据 语义化版本 来决定升级的。如果你原来是1.X.X的版本,不会知道升级到2.X.X的版本的。而且go现在的包的import语句引入2.X.X版本的时候需要跟一个v2的尾巴。这个超级不习惯。跟其他语言很大不同。
我目前使用的go的版本号:go version go1.12.4 darwin/amd64
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 理解缓存系统的三个问题
- 深入理解 TOP K问题
- 深入浅出理解Python“乱码”问题
- 一分钟理解 HTTPS 到底解决了什么问题
- 干货!教你深入理解缓存问题,使用缓存无压力!
- 论文浅尝 | 通过文本到文本神经问题生成的机器理解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mastering JavaServer Faces
Bill Dudney、Jonathan Lehr、Bill Willis、LeRoy Mattingly / Wiley / 2004-6-7 / USD 40.00
Harness the power of JavaServer Faces to create your own server-side user interfaces for the Web This innovative book arms you with the tools to utilize JavaServer Faces (JSF), a new standard that wi......一起来看看 《Mastering JavaServer Faces》 这本书的介绍吧!