Golang Debian打包步骤有哪些
导读:Go 应用 Debian 打包步骤 一 准备环境与工具 安装 Go 工具链与打包工具: sudo apt update && sudo apt install -y golang-go debhelper dh-gola...
Go 应用 Debian 打包步骤
一 准备环境与工具
- 安装 Go 工具链与打包工具:
- sudo apt update & & sudo apt install -y golang-go debhelper dh-golang lintian
- 准备项目与版本:
- 确保模块可用(go.mod 正确),约定版本号格式如:1.2.3-1(Debian 修订号)
- 选择打包方式(二选一):
- 源码构建:使用 dh-golang 在干净的构建环境中编译与打包(推荐)
- 二进制封装:在外部先编译好 Go 二进制,再用 dpkg-deb 直接封装(快速、简单)
二 方法一 源码构建 dh-golang(推荐)
- 初始化打包骨架(在项目根目录):
- dh_make --createorig -p your-package_1.2.3
- 选择单二进制包(single binary),按需保留/编辑生成的 debian/* 文件
- 关键文件要点:
- debian/control
- 设置包名、架构(Go 多为 amd64/arm64,也可用 all 视情况)、构建依赖与运行时依赖
- 示例关键字段:Package、Version、Architecture、Maintainer、Build-Depends、Depends、Description
- debian/rules
- 使用 dh-golang 最简示例:
- %: dh $@ --buildsystem=golang --with=golang
- 使用 dh-golang 最简示例:
- debian/install(可选)
- 指定安装路径,例如:
- your-go-app /usr/bin/
- config.yaml /etc/your-go-app/
- static/ /usr/share/your-go-app/static/
- 指定安装路径,例如:
- debian/changelog、debian/copyright
- 使用 dch -i 生成变更日志;copyright 注明许可证与版权
- debian/control
- 构建与检查:
- 构建:debuild -us -uc 或 dpkg-buildpackage -us -uc -b
- 检查:lintian …/your-package_1.2.3-1_amd64.changes
- 说明:
- Go 默认静态链接,可能触发部分 lintian 警告;优先通过正确设置 rules/control 与必要的 override 处理,而非简单忽略
三 方法二 二进制封装 dpkg-deb(快速)
- 交叉编译(在任意具备 Go 的主机):
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp ./cmd/myapp
- 准备打包目录结构:
- mkdir -p myapp-1.2.3/DEBIAN
- 可选:mkdir -p myapp-1.2.3/usr/bin
- 编写 debian/control(位于 myapp-1.2.3/DEBIAN/control):
- Package: myapp
- Version: 1.2.3-1
- Architecture: amd64
- Maintainer: Your Name you@example.com
- Description: Short description
- 安装文件与权限:
- cp myapp myapp-1.2.3/usr/bin/
- chmod 0755 myapp-1.2.3/usr/bin/myapp
- 构建与安装:
- dpkg-deb --build myapp-1.2.3
- sudo dpkg -i myapp-1.2.3.deb
- 说明:
- 适合简单工具或 CI 快速产出;不会执行源码构建与完整的 Debian 质量检查
四 常见要点与排错
- 架构与二进制:
- 纯 Go(CGO_ENABLED=0)通常为静态链接,架构设为 amd64/arm64;若用 gcc-go 则为动态链接,需相应处理依赖
- 依赖与 Lintian:
- 静态二进制可能导致 “binary-without-manpage” 等警告;优先补充手册页或在 debian/rules 中合理处理,必要时使用 lintian override
- 构建方式选择:
- 面向团队/仓库发布建议用 dh-golang;面向快速交付可用 dpkg-deb 封装预编译二进制
- 常用命令清单:
- 构建:debuild -us -uc;dpkg-buildpackage -us -uc -b
- 检查:lintian
- 安装/卸载:sudo dpkg -i pkg.deb;sudo apt remove pkg
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang Debian打包步骤有哪些
本文地址: https://pptw.com/jishu/757545.html
