使用go mod init转换Godeps.json遇路径格式错误的解决方法
解决Go mod转换Godeps.json时的路径冒号错误
错误原因
Go模块系统严格遵循文件系统路径规则,*冒号(:)*是Windows等系统的保留字符,不允许出现在文件路径中。你遇到的错误是因为项目中存在contrib/docker-integration/generated_certs.d/localregistry:5440/ca.crt这类带冒号的临时生成文件,在转换Godeps.json时被Go mod识别并触发了路径合法性检查。
解决步骤
删除临时生成的证书目录
这些generated_certs.d目录下的文件是测试过程中临时生成的证书,不属于项目源码核心内容,直接删除整个目录:rm -rf contrib/docker-integration/generated_certs.dWindows系统可执行:
Remove-Item -Recurse -Force contrib/docker-integration/generated_certs.d重新执行Go mod初始化命令
清理完无效文件后,重新运行:go mod init go mod tidy若问题仍存在,手动调整Godeps.json
检查Godeps/Godeps.json中是否引用了包含非法路径的依赖版本(比如错误里提到的github.com/docker/distribution/reference@cd27f179f2c10c5d300e6d09025b538c475b0d51),尝试将该依赖替换为不含非法路径的commit或tag,之后再执行go mod tidy。适配项目对应的Go版本
这个Kubernetes retired contrib属于较旧的项目,建议使用与项目匹配的Go版本(比如Go 1.12或1.13),新版本Go对旧依赖的兼容性可能存在问题。
内容的提问来源于stack exchange,提问作者User12547645
相关产品推荐
相关产品推荐

