Golang手动安装Github模块的方法
Golang手动安装Github模块的方法
尝试在无网络连接的隔离环境中使用 Github.com 的 go-sql-driver mysql。我可以让一个简单的 “hello world” Go 程序运行起来。我让管理员下载了上述模块/包,并将其复制到了 GOPATH/src/github.com/go-sql-driver/mysql。我的 MySQL 测试程序位于 GOPATH/src/m.go,并且在文件顶部有 "import ( _ "github.com/go-sql-driver/mysql")" 语句。当我执行 "go build m.go" 时,我得到…“no required module provides package …go-sql-driver mysql”。我在网上搜索过,关于手动安装的资料不多。我一直在使用 Python,但我需要处理 17 万亿条 RedShift 行数据,所以对速度有要求。非常感谢任何帮助。
更多关于Golang手动安装Github模块的方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
澄清一下:从 RedShift(类似 PostgreSQL)读取数据,将结果写入 MySQL。我打算先从 MySQL 开始。希望这能有所帮助。Go 版本是 go1.20.12 linux/adm64。MySQL 已经安装,并且有很多人正在使用。
更多关于Golang手动安装Github模块的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你好。你真的需要在机器上保留代码库吗?为什么不直接使用预编译的二进制文件呢?如果你确实需要,我建议使用 vendoring 而不是手动下载模块。你可以在其他地方创建项目并执行 go mod vendor,这会为你使用的包创建本地副本,然后你可以将其传输到目标机器。
func main() {
fmt.Println("hello world")
}
在隔离环境中手动安装Go模块,可以通过以下步骤解决:
1. 创建本地模块代理
在可访问网络的机器上,使用 go mod vendor 创建完整的依赖副本:
# 在有网络的机器上执行
mkdir temp-project && cd temp-project
go mod init temp-project
go get github.com/go-sql-driver/mysql@latest
go mod vendor
2. 复制整个vendor目录到隔离环境
将生成的 vendor 目录完整复制到隔离环境的项目目录中。
3. 在隔离环境中配置go.mod
在隔离环境的项目目录中:
// go.mod
module your-project
go 1.21
replace github.com/go-sql-driver/mysql => ./vendor/github.com/go-sql-driver/mysql
4. 使用vendor模式构建
# 在隔离环境中
go build -mod=vendor m.go
或者设置环境变量:
export GOFLAGS="-mod=vendor"
go build m.go
5. 完整示例代码结构
GOPATH/
├── src/
│ ├── your-project/
│ │ ├── go.mod
│ │ ├── m.go
│ │ └── vendor/
│ │ └── github.com/
│ │ └── go-sql-driver/
│ │ └── mysql/
│ │ ├── *.go
│ │ ├── go.mod
│ │ └── ...
6. 替代方案:使用replace指令直接指向本地路径
// go.mod
module your-project
go 1.21
replace github.com/go-sql-driver/mysql => /path/to/local/mysql-driver
然后构建:
go mod tidy
go build m.go
7. 验证示例代码
// m.go
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Successfully connected to MySQL")
}
关键点:确保 go.mod 文件存在并使用正确的 replace 指令,然后通过 -mod=vendor 或设置 GOFLAGS 来强制使用本地依赖。

