温馨提示×

ubuntu golang打包用啥

小樊
46
2026-09-19 11:55:46
栏目: 编程语言

在 Ubuntu 上用 Golang 打包,常见场景和对应工具如下:

1. 最基础:Go 自带编译(交叉/本地打包)

# 本地编译
go build -o myapp main.go

# 交叉编译(比如在 Ubuntu 上打 Windows 包)
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe

# 打 Linux 静态包(推荐服务端用)
CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp

✅ 不需要额外工具,最常见


2. 做成 Ubuntu / Debian 安装包(.deb)

推荐工具:

dpkg-deb(系统自带)

手动写 control 文件,适合简单场景

nfpm(非常适合 Go 项目)

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

配置 nfpm.yaml 后:

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

fpm(Ruby 写,但很好用)

sudo apt install ruby ruby-dev
sudo gem install fpm
fpm -s dir -t deb -n myapp -v 1.0 ./myapp=/usr/bin/myapp

3. 自动化发布(GitHub Release / 多平台)

✅ GoReleaser(最主流)

go install github.com/goreleaser/goreleaser@latest
goreleaser init
goreleaser release

支持:

  • 多平台编译
  • deb / rpm / docker
  • GitHub Release

4. 容器化打包(Docker)

FROM golang:1.22 as build
WORKDIR /app
COPY . .
RUN go build -o app

FROM ubuntu
COPY --from=build /app/app /usr/bin/app
CMD ["app"]

简单推荐

  • 只跑服务:go build + systemd
  • 给用户装:nfpm → .deb
  • 开源项目:GoReleaser

如果你说下你是:

  • deb
  • docker
  • 还是只是 编译成二进制

我可以直接给你一套现成配置。

0