问题
在使用go mod的情况下,添加依赖go-systemd或者etcd的golang库的时候容易出现no matching versions for query "latest" 的问题。
解决方案
在go.mod当中添加如下文本内容。
replace github.com/coreos/go-systemd => github.com/coreos/go-systemd/v22 v22.1.0
使用replace代理下go-systemd的库。
原因
这主要是因为go.mod使用semver标记版本的方法。go-systemd这个包的名字就被标记为github.com/coreos/go-systemd/v22 可以从下面这个URL查看。https://github.com/coreos/go-systemd/blob/master/go.mod 。
这种情况下如果我们想使用go-systemd/dbus这个功能就必须使用如下的方式进行引用。
github.com/coreos/go-systemd/v22/dbus
否则,如果我们不想在库后面跟上版本号。就必须使用replace的方法对go-systemd进行替代。
这主要是go-systemd这个项目和go.mod本身一些使用习惯的冲突问题。后面在有必要的情况下。我想coreos可能会解决这个问题。
有疑问加站长微信联系(非本文作者)