温馨提示×

ubuntu golang打包靠什么

小樊
40
2026-10-07 06:32:00
栏目: 编程语言

在 Ubuntu 上用 Go(Golang)打包,主要靠 Go 工具链本身,通常还会结合 系统包管理 / 容器 / CI 来完成“发布包”。下面分层次说清楚。


一、Go 自带的“打包”能力(最核心)

1. go build

最基础的“打包”方式:

go build -o myapp main.go

特点:

  • 编译成 单一静态二进制文件
  • 不依赖 Ubuntu 的运行时(不像 Python/Java)
  • 可直接拷贝到同架构机器运行

常用参数:

go build -ldflags "-s -w"   # 去调试信息,体积更小
CGO_ENABLED=0 go build      # 纯静态编译(推荐)

2. 交叉编译(非常常用)

在 Ubuntu 上打其他平台的包:

# Linux amd64
GOOS=linux GOARCH=amd64 go build

# Windows
GOOS=windows GOARCH=amd64 go build

# macOS
GOOS=darwin GOARCH=arm64 go build

✅ Go 的“打包”本质就是 编译 + 输出二进制


二、Ubuntu 系统级打包方式(发布用)

如果你是说“做成 Ubuntu 能安装的包”,常见有:

1. .deb 包(Ubuntu 官方方式)

工具:

  • dpkg-deb
  • fpm(推荐)
  • dh-make + debuild

示例(fpm):

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

2. Snap(Ubuntu 推的)

snapcraft

适合:

  • 桌面 / 服务类应用
  • 想跨 Ubuntu 版本

3. 容器打包(最流行)

用 Docker:

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

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

✅ 工业界最常见


三、CI / 自动化打包

在 Ubuntu 上常用:

  • GitHub Actions
  • GitLab CI
  • Jenkins

流程一般是:

代码 → go build → 打 deb / docker → 发布

总结一句话

Ubuntu 上 Go 打包,靠的是 go build 生成二进制,再根据需要用 deb / docker / snap 封装。

如果你指的是:

  • “打 deb 包”
  • “打 docker 镜像”
  • “交叉编译”
  • “减小体积”

可以告诉我具体场景,我可以直接给你完整示例。

0 踩