温馨提示×

ubuntu golang打包要配吗

小樊
48
2026-10-10 06:04:13
栏目: 编程语言

看你说的“打包”是指哪种场景,下面分情况说一下 Ubuntu 下 Go 项目要不要额外配置:


一、最简单的「Go 编译打包」(最常见)

如果你只是用 Go 编译成二进制:

go build -o myapp main.go

✅ Ubuntu 基本不需要特别配置

  • 只要装了 Go:
    sudo apt install golang-go
    # 或官方版本
    
  • 编译出来的就是 Linux 原生二进制
  • 直接 ./myapp 就能跑

⚠️ 注意事项(很小):

  • 确保架构一致(amd64 / arm64)
  • 如果是服务器,建议:
    CGO_ENABLED=0 go build
    
    避免依赖系统 glibc

二、交叉编译(在 Ubuntu 打其他平台包)

比如你在 Ubuntu 上打 Windows / macOS 包:

GOOS=windows GOARCH=amd64 go build

✅ 不需要额外工具 Go 原生支持交叉编译


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

如果你想:

  • dpkg -i xxx.deb
  • 或走 apt install

那就 需要配置:

常用方式

  1. dpkg-deb
  2. fpm
  3. nfpm(Go 项目推荐)

示例(nfpm):

name: myapp
arch: amd64
version: 1.0.0

✅ 适合:

  • 内部分发
  • 生产环境部署

四、Docker 打包(非常常见)

如果你用 Docker:

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

✅ Ubuntu 宿主机 不需要特殊配置 ✅ 推荐多阶段构建


五、systemd 服务(生产部署)

如果是后台服务:

[Unit]
Description=myapp

[Service]
ExecStart=/usr/local/bin/myapp
Restart=always

[Install]
WantedBy=multi-user.target

这个算“部署配置”,不算打包。


总结一句话

场景 要不要配
普通 go build ❌ 不用
交叉编译 ❌ 不用
deb / apt 包 ✅ 要
Docker ❌ 不用
systemd 服务 ✅ 要

如果你能说一下:

  • 是 Web 服务 / CLI 工具 / 微服务
  • 想打到 deb / docker / 直接跑

我可以直接给你一套 Ubuntu 下的完整打包方案。

0 踩