Debian 上打包 Golang 出错的快速排查与修复
一 常见错误与对应修复
二 推荐的打包目录与关键文件
- 最小化 debian/rules(使用 dh-golang)
- debian/control 关键字段
- 示例:
- Build-Depends: debhelper-compat (= 13), dh-golang, golang-go | golang-any
- Package: my-go-app
- Architecture: any
- Depends: ${shlibs:Depends}, ${misc:Depends}
- 说明
- 采用 dh-golang 可自动处理模块依赖与安装路径,简化 rules 编写;若不使用 dh-golang,也可在 rules 中直接调用 go 命令完成构建
三 构建与验证步骤
- 本地构建
- 清理:debuild clean
- 构建:debuild -uc -us
- 产物检查
- 检查架构:file debian/my-go-app/usr/bin/myapp
- 检查依赖:ldd debian/my-go-app/usr/bin/myapp(静态二进制应显示 “not a dynamic executable”)
- 在干净环境复核
- 使用 pbuilder/sbuild 在最小化 chroot 中构建,提前暴露缺失依赖与环境问题
四 获取更详细的错误信息
- 本地查看完整输出:在构建命令后增加 -d 或直接在终端观察日志
- 查看构建日志与状态
- 若你向 Debian 官方仓库上传过包,可在 buildd.debian.org 查看各架构的构建日志与失败原因,用于比对与定位问题