温馨提示×

怎样用ubuntu打包golang

小樊
39
2026-10-01 10:29:15
栏目: 编程语言

在 Ubuntu 上“打包 Golang”通常有以下几种含义,我分别说明,你可以按需求选择:


一、编译生成可执行文件(最常见)

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

生成的可执行文件:

./myapp

3. 交叉编译(例如打包给 Windows)

GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go

二、打包成 Ubuntu / Debian 软件包(.deb)

方法 1:使用 dpkg-deb(手动)

目录结构

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

control 文件示例

Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My Golang App

编译并打包

go build -o myapp main.go
mkdir -p myapp/usr/local/bin
cp myapp myapp/usr/local/bin/
dpkg-deb --build myapp

生成:

myapp.deb

安装:

sudo dpkg -i myapp.deb

方法 2:使用 nfpm(推荐,简单)

sudo apt install nfpm

nfpm.yaml 示例:

name: myapp
arch: amd64
platform: linux
version: 1.0.0
section: utils
priority: optional
maintainer: you@example.com
description: My Golang App

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

打包:

nfpm pkg -t myapp.deb

三、打包成 Docker 镜像(服务器部署)

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

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

构建:

docker build -t myapp .

四、打包成 systemd 服务(后台运行)

# /etc/systemd/system/myapp.service
[Unit]
Description=My Golang App

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

[Install]
WantedBy=multi-user.target
sudo systemctl enable myapp
sudo systemctl start myapp

如果你能具体说:

  • 是 命令行工具 / Web 服务 / GUI
  • 想打包成 deb / docker / 压缩包
  • 是否要 跨平台

我可以直接给你一套完整命令。

0 踩