不能离线安装 Fiber 框架,因 go get 依赖网络解析模块、校验 checksum 并下载 zip;正确做法是提前在有网环境用 go mod vendor 打包依赖,再离线构建。

离线安装 Fiber 框架不可行——go get 本质是网络拉取,没有“离线安装包”概念;但你可以提前在有网环境下载好全部依赖并打包,再复制到目标机器用 go mod vendor 或 go install 离线构建。
为什么不能直接“离线安装”
Fiber 本身不提供预编译二进制或离线 ZIP 包;go get 命令必须联网解析 go.mod、校验 checksum、下载 module zip 并解压到 $GOPATH/pkg/mod。断网时执行会报错:go: github.com/gofiber/fiber/v2@v2.52.0: Get "https://proxy.golang.org/...": dial tcp: lookup proxy.golang.org: no such host。
正确做法:提前 vendor 所有依赖
在有网的同架构机器(如 Linux amd64)上操作,确保 Go 版本 ≥1.21(Fiber v2 要求):
- 初始化项目并显式 require Fiber:
go mod init example.com/app && go get github.com/gofiber/fiber/v2@v2.52.0 - 运行
go mod vendor—— 它会把go.sum中所有依赖(含github.com/valyala/fasthttp等底层依赖)完整复制到项目根目录下的vendor/文件夹 - 把整个项目(含
go.mod、go.sum、vendor/)打包(如tar -czf app-offline.tgz .),拷贝到目标离线机器 - 在离线机解压后,加环境变量启用 vendor 模式:
GO111MODULE=on GOPROXY=off GOOS=linux GOARCH=amd64 go build -mod=vendor -o server .
关键注意点:CGO 和证书问题
离线部署常因两个细节失败:
-
fasthttp默认不走系统证书池,若服务需出站 HTTPS(比如调用第三方 API),必须手动加载 CA 证书:在代码里加fasthttp.AddRootCAFromPEMFile("/etc/ssl/certs/ca-bundle.crt"),并确保该文件随程序一起部署 - 务必设
CGO_ENABLED=0:否则go build可能尝试链接 libc,在 Alpine 或精简系统上直接 panic;正确命令是CGO_ENABLED=0 go build -mod=vendor -o server . - 别信 “
go mod download -x后复制$GOPATH/pkg/mod” —— 该目录含平台相关缓存和符号链接,跨机器迁移极易出错,vendor/是唯一可靠路径
真正离线可用的只有 vendor/ 目录 + 显式 -mod=vendor 构建;其他所谓“缓存复用”方式在 CI/CD 或不同 OS 上大概率失效。











