眼科医院网站开发策划织梦做仿站时 为何会发生本地地址跳转网站地址
文章目录
- 项目背景
- 问题 1:`go get -u gorm.io/gorm` 会覆盖旧版本吗?
- 问题 2:如何删除旧版本?
- 注意事项
- 总结
在 Go 项目开发中,管理依赖版本和清理旧版本是保持项目高效和整洁的重要步骤。本文将基于一个grom example(位于
https://gorm.io/docs/),分享如何更新依赖(如
gorm.io/gorm)和删除旧版本的经验。
项目背景
我的项目使用 GORM 操作 SQLite 数据库,代码在 gorm/crud.go 中,go.mod 位于父目录 /home/lizhi/go/src/go-grom,整个本地项目结构和内容如下:
~/go/src/go-grom$ tree
.
├── go.mod
├── go .sum
└── grom└── crud.go
module go-gromgo 1.21require (gorm.io/driver/sqlite v1.5.5gorm.io/gorm v1.25.7
)
我运行了 go get -u gorm.io/gorm 更新依赖,并想清理旧版本(如 v1.25.7)。
问题 1:go get -u gorm.io/gorm 会覆盖旧版本吗?
我想知道运行 go get -u gorm.io/gorm 是否会覆盖旧版本(例如 v1.25.7)。
答案:
- 本地缓存:不会覆盖旧版本。Go 模块缓存(
/home/lizhi/go/pkg/mod)保留所有版本。例如,旧版本gorm.io/gorm@v1.25.7和新版本v1.26.0并存。 - go.mod 文件:会更新版本。运行
go get -u gorm.io/gorm将go.mod中的v1.25.7更新为最新版本(例如v1.26.0)。 - 项目行为:代码(如
crud.go)使用新版本编译和运行,旧版本仅保留在缓存中。
验证:
运行后检查 go.mod:
cat /home/lizhi/go/src/go-grom/go.mod
# 输出示例:
# require gorm.io/gorm v1.26.0
检查缓存:
ls /home/lizhi/go/pkg/mod/gorm.io/gorm*
# 输出示例:
# /home/lizhi/go/pkg/mod/gorm.io/gorm@v1.25.7
# /home/lizhi/go/pkg/mod/gorm.io/gorm@v1.26.0
运行程序确认兼容性:
cd /home/lizhi/go/src/go-grom/gorm
go run ./crud.go
问题 2:如何删除旧版本?
旧版本(如 v1.25.7)占用缓存空间,我想删除它。
答案:
Go 不提供直接命令删除特定版本,但可以通过以下方法清理:
-
手动删除特定版本:
- 找到缓存目录:
go env GOMODCACHE # 输出: /home/lizhi/go/pkg/mod - 删除旧版本:
rm -rf /home/lizhi/go/pkg/mod/gorm.io/gorm@v1.25.7 - 验证:
ls /home/lizhi/go/pkg/mod/gorm.io/gorm* # 输出: /home/lizhi/go/pkg/mod/gorm.io/gorm@v1.26.0
- 找到缓存目录:
-
清理整个缓存:
- 删除所有模块缓存:
go clean -modcache - 重新下载当前版本:
cd /home/lizhi/go/src/go-grom go build ./... - 注意:此方法影响所有模块,谨慎使用。
- 删除所有模块缓存:
-
使用
go mod tidy:- 清理
go.sum中的未使用校验和:cd /home/lizhi/go/src/go-grom go mod tidy - 配合手动删除缓存,效果更佳。
- 清理
推荐:使用方法 1 精确删除旧版本(如 v1.25.7),然后运行 go mod tidy 清理 go.sum。
注意事项
- 兼容性:更新到
v1.26.0后,检查 GORM 变更日志,确保crud.go的 CRUD 操作(如AutoMigrate、Create)兼容。 - 其他项目:删除
v1.25.7可能影响依赖旧版本的其他项目。运行go build ./...检查整个模块。 - 网络:清理缓存后,重新下载需网络支持。设置
GOPROXY:export GOPROXY=https://goproxy.cn,direct
总结
- 更新依赖:
go get -u gorm.io/gorm更新go.mod到最新版本(如v1.26.0),缓存保留旧版本。 - 删除旧版本:手动删除
/home/lizhi/go/pkg/mod/gorm.io/gorm@v1.25.7,或清理整个缓存(go clean -modcache)。 - 建议:
- 备份
go.mod和go.sum前更新或清理。 - 运行
go mod tidy保持依赖整洁。 - 使用
go list -m -f '{{.Path}} {{.Version}} {{.Dir}}' gorm.io/gorm确认版本和路径。
- 备份
通过这些步骤,我成功更新了依赖并清理了旧版本,项目保持高效运行。
