在 Ubuntu 上用 Golang 打包,常见场景和对应工具如下:
# 本地编译
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
✅ 不需要额外工具,最常见
推荐工具:
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
go install github.com/goreleaser/goreleaser@latest
goreleaser init
goreleaser release
支持:
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"]
如果你说下你是:
我可以直接给你一套现成配置。