使用模块进行版本化导入失败
Versioned import in go using modules fails
我希望我的程序使用特定版本的 client-go,以便它与目标集群兼容。
然而语法如下:
import (
"log"
"os"
"path/filepath"
clientcmd "k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd"
)
我用它来构建我的客户端配置如下:
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
失败并显示此错误消息:
▶ go run main.go
package main
imports k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd: can only use path@version syntax with 'go get'
我应该如何声明特定版本的输入?
将导入更改为
import "k8s.io/client-go/tools/clientcmd"
并执行命令:
go get k8s.io/client-go@kubernetes-1.12.10
使用过的版本记录在go.mod
文件中。上面的 go get
将更改 go.mod
以取决于给定的版本。请注意,您也可以手动编辑 go.mod
(但最好将其留给 go 工具)。如果您使用 v2
或更高版本,您只需要修改导入路径,在这种情况下,主要版本必须是后缀,例如
import "k8s.io/client-go/tools/clientcmd/v2"
注:
在上面的 go get
命令之后,go.mod
文件将被修改为包含一个 require
指令,如下所示:
k8s.io/client-go v0.0.0-20190708094436-77c08c6b86df // indirect
这是因为 go modules 需要语义版本控制,而 kubernetes-1.12.10
不是 semver2 兼容的版本号。不过,go 工具将取消此版本标记 77c08c6b86df0af19f718d9a57620c4e9b811d48
commit,并在 go.mod
文件中使用它。
在此处阅读更多相关信息:Go Wiki: Modules: How to Upgrade and Downgrade Dependencies
我希望我的程序使用特定版本的 client-go,以便它与目标集群兼容。
然而语法如下:
import (
"log"
"os"
"path/filepath"
clientcmd "k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd"
)
我用它来构建我的客户端配置如下:
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
失败并显示此错误消息:
▶ go run main.go
package main imports k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd: can only use path@version syntax with 'go get'
我应该如何声明特定版本的输入?
将导入更改为
import "k8s.io/client-go/tools/clientcmd"
并执行命令:
go get k8s.io/client-go@kubernetes-1.12.10
使用过的版本记录在go.mod
文件中。上面的 go get
将更改 go.mod
以取决于给定的版本。请注意,您也可以手动编辑 go.mod
(但最好将其留给 go 工具)。如果您使用 v2
或更高版本,您只需要修改导入路径,在这种情况下,主要版本必须是后缀,例如
import "k8s.io/client-go/tools/clientcmd/v2"
注:
在上面的 go get
命令之后,go.mod
文件将被修改为包含一个 require
指令,如下所示:
k8s.io/client-go v0.0.0-20190708094436-77c08c6b86df // indirect
这是因为 go modules 需要语义版本控制,而 kubernetes-1.12.10
不是 semver2 兼容的版本号。不过,go 工具将取消此版本标记 77c08c6b86df0af19f718d9a57620c4e9b811d48
commit,并在 go.mod
文件中使用它。
在此处阅读更多相关信息:Go Wiki: Modules: How to Upgrade and Downgrade Dependencies