解决离线环境下go语言项目依赖问题
目录
操作步骤
Online端:
- 新建项目目录及
go文件,将需要移植到内网的依赖包包名写入go文件中。 - 然后利用
go mod vendor命令,将依赖包打包到当前项目所在目录。 - 将当前项目目录下的
vendor目录、go.mod及go.sum三个东西拷贝到离线电脑中。
Offline端
新建项目目录offline_project(该名字为举例,实际随意),将前面第三步拷贝的三个东西拷贝进来,新建go文件,需要用到什么包就导入什么包(如果导入的是第三方包前提是该包已经打包进了vendor目录中)
注意事项
在Offline端,import的包如果只是vendor中的个别包,则go.mod和go.sum可能会出现红点,不能再使用go mod命令去整理了,且不要担心编译时会将vendor中的依赖包全部编译进去。
如何复用
要复用移植的第三方包,先将项目目录offline_project中除vendor、go.mod、go.sum之外原有的项目文件(主要是go文件)移出当前目录或者更改后缀,然后再新建go文件。
常用go依赖
| 包名 | 说明 | 用途 |
|---|---|---|
| gorm.io/gorm | 有中文文档 | 数据库操作 |
| gorm.io/driver/sqlite | 数据库操作 | |
| gorm.io/driver/mysql | 数据库操作 | |
| github.com/mattn/go-sqlite3 | 数据库操作 | |
| github.com/go-pg/pg/v10 | PostgreSQL client and ORM for Golang | 数据库操作 |
| github.com/lib/pq | A pure Go postgres driver for Go’s database/sql package | 数据库操作 |
| github.com/marcboeker/go-duckdb | A database/sql driver for the DuckDB database engine. | 数据库操作 |
| github.com/go-sql-driver/mysql | 数据库操作 | |
| github.com/imroc/req/v3 | 国人开发的强大网络请求库,有中文文档 | 网络请求 |
| github.com/gocolly/colly/v2 | 语法简单但是无详细文档的爬虫框架,能请求能解析 | 网络请求 |
| github.com/tidwall/gjson | json解析库 | 数据解析 |
| github.com/bytedance/sonic | 字节跳动出品的最快json解析库,各项性能遥遥领先 | 数据解析 |
| github.com/xuri/excelize/v2 | 字节跳动出的excel库,有中文文档 | 数据解析 |
| github.com/rocketlaunchr/dataframe-go | 导入导出: CSV, JSONL, Parquet, MySQL ,PostgreSQL | 数据解析 |
| github.com/PuerkitoBio/goquery | html数据解析,类似于jQuery或者beautifulsoup ,colly自带该解析库 | 数据解析 |
| github.com/gin-gonic/gin | 有中文文档 | WEB框架 |
| https://sourceforge.net/projects/mingw-w64/files/ | GCC编译依赖,需要选择合适的版本,i686纯32位版,供32位win系统使用;x86_64是64位系统用的版本;seh结尾是纯64位编译;sjlj结尾是32 64两种编译,需加-m32或-m64参数;posix通常用于跨平台,比win32兼容性好一些。我下载的是:x86_64-posix-sjlj(这个已经编译好了解压完就能用) | MinGW-W64 GCC |
| github.com/spf13/viper | 配置文件读写库 | 文件解析 |
| github.com/coloraven/lancet | 工具函数库,fork自https://github.com/duke-git/lancet/tree/main,添加一些自己的工具 |
参考文章
go-offline-packager https://pkg.go.dev/github.com/go-sharp/go-offline-packager#section-readme https://gist.github.com/gmolveau/f09c1038ca622620e54d0579ba06ea96 以下为备份
Using go mod vendor
0 - With an existing module
- copy
go.modandgo.sumfiles from the offline PC to the internet PC
0bis - New module
- create a folder on the internet PC
- create a go module :
go mod init test
1 - Download dependencies via vendor folder
- create a
offline_modules.gofile :
|
|
- add the dependencies you want to download (use
_) :
|
|
-
run
go mod vendor -
the vendor folder should have new folders in it representing dependencies
2 - Back to offline
- copy
go.mod,go.sumandvendor - paste them on your offline PC, edit
go.modmodule name if necessary - run your go commands with the flag
-mod=vendorlikego run -mod=vendor main.go