温馨提示×

ubuntu中golang怎么打deb包

小樊
43
2026-09-28 12:28:03
栏目: 编程语言

在 Ubuntu 下把 Go 程序打包成 .deb 常见有几种方式,从“手动 control 文件”到“用工具自动打包”。下面按最实用、最常用的方式给你讲。


一、准备工作

1. 安装必要工具

sudo apt update
sudo apt install -y dpkg-dev debhelper build-essential

2. 编译 Go 程序

假设你的程序叫 myapp:

GOOS=linux GOARCH=amd64 go build -o myapp

二、方式一:手动打 deb 包(推荐理解原理)

1. 创建目录结构

mkdir -p myapp_1.0.0_amd64/DEBIAN
mkdir -p myapp_1.0.0_amd64/usr/bin

2. 放入可执行文件

cp myapp myapp_1.0.0_amd64/usr/bin/

3. 编写 control 文件

nano myapp_1.0.0_amd64/DEBIAN/control

内容示例:

Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@example.com>
Description: A simple Go application
 This is a demo Go app packaged as deb.

4. 设置权限

chmod 0755 myapp_1.0.0_amd64/DEBIAN
chmod 0755 myapp_1.0.0_amd64/usr/bin/myapp

5. 打包

dpkg-deb --build myapp_1.0.0_amd64

生成:

myapp_1.0.0_amd64.deb

6. 安装测试

sudo dpkg -i myapp_1.0.0_amd64.deb
myapp

三、方式二:使用 dh-make + debhelper(规范 Debian 包)

适合 长期维护、发布到仓库

1. 初始化

mkdir myapp && cd myapp
dh_make --native -s -p myapp_1.0.0

2. 修改 debian/control

Architecture: amd64

3. 放二进制

mkdir -p debian/myapp/usr/bin
cp myapp debian/myapp/usr/bin/

4. 构建

dpkg-buildpackage -us -uc

生成:

../myapp_1.0.0_amd64.deb

四、方式三:使用第三方工具(更简单)

1. fpm(非常推荐)

sudo apt install ruby ruby-dev
sudo gem install fpm

打包:

fpm -s dir -t deb -n myapp -v 1.0.0 \
  --architecture amd64 \
  ./myapp=/usr/bin/myapp

2. nfpm(Go 生态专用)

go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest

nfpm.yaml 示例:

name: myapp
arch: amd64
version: 1.0.0
maintainer: you <you@example.com>
description: Go app
contents:
  - src: ./myapp
    dst: /usr/bin/myapp

打包:

nfpm package -f nfpm.yaml -t myapp.deb

五、常见坑

✅ Go 程序 必须静态或自带依赖
✅ deb 包里不要用 go run
✅ 架构要一致(amd64 / arm64)
✅ systemd 服务要放 /lib/systemd/system/


六、推荐方案总结

场景 推荐
快速内部使用 手动 / fpm
正式发布 dh-make
Go 项目 CI nfpm

如果你是:

  • CLI 工具
  • 带 systemd 服务
  • 多架构(arm64)

可以告诉我,我可以直接给你 完整 deb 模板。

0 踩