温馨提示×

如何用ubuntu打包golang

小樊
42
2026-10-24 22:38:21
栏目: 编程语言

在 Ubuntu 上“打包 Golang”通常指把 Go 程序编译成可执行文件,或做成 deb / 容器 / 发布包。下面按常见场景给你一套实用方案。


一、最基础:编译成 Linux 可执行文件

1. 安装 Go

sudo apt update
sudo apt install golang-go
# 或官方版本
# https://go.dev/dl/

验证:

go version

2. 编译程序

cd your_project
go build -o myapp main.go

交叉编译(例如给 centos / arm):

GOOS=linux GOARCH=amd64 go build -o myapp
GOOS=linux GOARCH=arm64 go build -o myapp-arm

二、打包成 Ubuntu(Debian).deb 包 ✅ 推荐

方法 1:使用 dpkg-deb(简单)

目录结构:

myapp/
├── DEBIAN
│   └── control
├── usr
│   └── local
│       └── bin
│           └── myapp

control 文件示例:

Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@mail.com>
Description: My Go app

打包:

dpkg-deb --build myapp

安装:

sudo dpkg -i myapp.deb

方法 2:使用 nfpm(Go 项目友好)⭐推荐

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

nfpm.yaml:

name: myapp
arch: amd64
platform: linux
version: 1.0.0
maintainer: you <you@mail.com>
description: My Go app

contents:
  - src: ./myapp
    dst: /usr/local/bin/myapp
    mode: 0755

生成 deb:

nfpm pkg --target myapp.deb

三、用 Makefile 自动化打包

build:
	go build -o myapp main.go

deb:
	nfpm pkg --target myapp.deb

clean:
	rm -f myapp myapp.deb
make build
make deb

四、Docker 打包(最通用)

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

FROM ubuntu:22.04
COPY --from=build /app/myapp /usr/local/bin/myapp
ENTRYPOINT ["myapp"]
docker build -t myapp .

五、发布工具(进阶)

  • GoReleaser:一键生成 deb / rpm / docker / GitHub Release
  • snapcraft:Ubuntu 官方 snap 包
  • AppImage:Linux 通用可执行

六、常见坑

✅ 静态编译(避免依赖 glibc):

CGO_ENABLED=0 go build -o myapp

✅ 权限问题:

chmod +x myapp

如果你告诉我:

  • 是 命令行工具 / Web 服务 / GUI
  • 要 deb / docker / 云服务器部署

我可以直接给你完整模板。

0 踩