如何将为Go 1.9编写的项目升级为与Go 1.18兼容?

huangapple go评论68阅读模式
英文:

How does one upgrade go project made for 1.9 to be compatiable with 1.18?

问题

我正在尝试升级一个针对 >= 1.9 版本的 Go 项目,但显然在 1.18 版本上无法工作,原因是缺少 go.mod 文件,也就是依赖项的锁定文件。

我应该如何正确升级它?

原始源代码位于:https://github.com/annttu/latenssi-go

我遇到了一堆 "does not contain package" 的错误,但我不明白为什么会出现这种情况?

GOROOT=/opt/homebrew/Cellar/go/1.18/libexec #gosetup
GOPATH=/Users/sm/go #gosetup
/opt/homebrew/Cellar/go/1.18/libexec/bin/go mod tidy #gosetup
go: 找到 github.com/annttu/latenssi-go/collector/config 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/probe 包的模块
go: 找到 github.com/annttu/latenssi-go/proto 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/config 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/grpc 包的模块
go: 找到 github.com/annttu/latenssi-go/collector/destination 包的模块
go: 找到 github.com/annttu/latenssi-go/collector/grpc 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/result 包的模块
go: 找到 github.com/miekg/dns 包的模块
go:  github.com/miekg/dns 中找到 github.com/miekg/dns v1.1.48
go: 找到 github.com/annttu/latenssi-go/probe/result 包的模块
go: 找到 github.com/annttu/latenssi-go/collector/config 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/probe 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/config 包的模块
go: 找到 github.com/annttu/latenssi-go/collector/destination 包的模块
go: 找到 github.com/annttu/latenssi-go/probe/grpc 包的模块
go: 找到 github.com/annttu/latenssi-go/collector/grpc 包的模块
go: 找到 github.com/annttu/latenssi-go/proto 包的模块
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector 导入
	github.com/annttu/latenssi-go/collector/config: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/collector/config
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector 导入
	github.com/annttu/latenssi-go/collector/destination: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/collector/destination
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector 导入
	github.com/annttu/latenssi-go/collector/grpc: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/collector/grpc
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector/destination 导入
	github.com/annttu/latenssi-go/proto: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/proto
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe 导入
	github.com/annttu/latenssi-go/probe/config: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/probe/config
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe 导入
	github.com/annttu/latenssi-go/probe/grpc: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/probe/grpc
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe 导入
	github.com/annttu/latenssi-go/probe/probe: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/probe/probe
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe/grpc 导入
	github.com/annttu/latenssi-go/probe/result: 找到模块 github.com/annttu/latenssi-go@latest (v0.0.0-20180822071121-cbe7dd3b5c65)但不包含包 github.com/annttu/latenssi-go/probe/result
英文:

I'm trying to upgrade a go-project that was made for >= 1.9, but apperantly doesn't work with 1.18 due to lacking go.mod file, aka the lock for deps.

How do I properly upgrade it?

Original source code is at: https://github.com/annttu/latenssi-go

I'm getting a bunch of does not contain package and I don't understand as to why?

GOROOT=/opt/homebrew/Cellar/go/1.18/libexec #gosetup
GOPATH=/Users/sm/go #gosetup
/opt/homebrew/Cellar/go/1.18/libexec/bin/go mod tidy #gosetup
go: finding module for package github.com/annttu/latenssi-go/collector/config
go: finding module for package github.com/annttu/latenssi-go/probe/probe
go: finding module for package github.com/annttu/latenssi-go/proto
go: finding module for package github.com/annttu/latenssi-go/probe/config
go: finding module for package github.com/annttu/latenssi-go/probe/grpc
go: finding module for package github.com/annttu/latenssi-go/collector/destination
go: finding module for package github.com/annttu/latenssi-go/collector/grpc
go: finding module for package github.com/annttu/latenssi-go/probe/result
go: finding module for package github.com/miekg/dns
go: found github.com/miekg/dns in github.com/miekg/dns v1.1.48
go: finding module for package github.com/annttu/latenssi-go/probe/result
go: finding module for package github.com/annttu/latenssi-go/collector/config
go: finding module for package github.com/annttu/latenssi-go/probe/probe
go: finding module for package github.com/annttu/latenssi-go/probe/config
go: finding module for package github.com/annttu/latenssi-go/collector/destination
go: finding module for package github.com/annttu/latenssi-go/probe/grpc
go: finding module for package github.com/annttu/latenssi-go/collector/grpc
go: finding module for package github.com/annttu/latenssi-go/proto
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector imports
github.com/annttu/latenssi-go/collector/config: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/collector/config
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector imports
github.com/annttu/latenssi-go/collector/destination: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/collector/destination
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector imports
github.com/annttu/latenssi-go/collector/grpc: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/collector/grpc
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/collector/destination imports
github.com/annttu/latenssi-go/proto: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/proto
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe imports
github.com/annttu/latenssi-go/probe/config: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/probe/config
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe imports
github.com/annttu/latenssi-go/probe/grpc: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/probe/grpc
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe imports
github.com/annttu/latenssi-go/probe/probe: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/probe/probe
github.com/annttu/lantenssi-go/src/github.com/annttu/latenssi-go/probe/grpc imports
github.com/annttu/latenssi-go/probe/result: module github.com/annttu/latenssi-go@latest found (v0.0.0-20180822071121-cbe7dd3b5c65), but does not contain package github.com/annttu/latenssi-go/probe/result

答案1

得分: 1

开始使用go mod init命令:

cd /path/to/latenssi-go
go mod init github.com/annttu/latenssi-go
go mod tidy

如果是一个分支,可以添加一个replace指令来避免修改源代码:

replace github.com/annttu/latenssi-go => github.com/samip5/latenssi-go

注意:原始项目 annttu/latenssi-go的源代码位于 src/ 目录下,这样是行不通的。

你需要将源代码直接放在项目的根目录下,而不是 src 目录下。src 只在使用 GOPATH 模式(Go v1.11之前)时才会被使用

英文:

Starts with go mod init

cd /path/to/latenssi-go
go mod init github.com/annttu/latenssi-go
go mod tidy

For a fork, add a replace directive to avoid modifying the sources:

replace github.com/annttu/latenssi-go => github.com/samip5/latenssi-go

Note: the original project annttu/latenssi-go has its sources in src/: that won't work.

You need your sources directly at the root project level, not under src.
src is only used by GOPATH when building GOPATH mode (pre-Go v1.11).

huangapple
  • 本文由 发表于 2022年4月25日 14:30:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/71995293.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定