下面我分常见场景给你讲,基本能覆盖 90% 的 Go 在 Ubuntu 上的打包需求。
# 1. 卸载旧版本(如果有)
sudo rm -rf /usr/local/go
# 2. 下载(替换版本号)
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
# 3. 解压
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
# 4. 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
# 5. 生效
source ~/.bashrc
验证:
go version
sudo apt update
sudo apt install golang-go
⚠️ Ubuntu 仓库里的 Go 版本通常落后很多。
go build -o app main.go
生成:
./app
GOOS=linux GOARCH=amd64 go build -o app main.go
GOOS=windows GOARCH=amd64 go build -o app.exe main.go
GOOS=darwin GOARCH=amd64 go build -o app main.go
go build -ldflags="-s -w" -o app main.go
再进一步(可选):
upx app
.deb(生产常用)sudo apt install build-essential dpkg-dev
myapp/
├── DEBIAN
│ └── control
├── usr
│ └── local
│ └── bin
│ └── myapp
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: yourname <you@example.com>
Description: My Go Application
dpkg-deb --build myapp
输出:
myapp.deb
安装:
sudo dpkg -i myapp.deb
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o app
FROM ubuntu:22.04
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
构建:
docker build -t myapp .
如果是 CGO 程序:
CGO_ENABLED=1 GOOS=linux go build
如果是 纯 Go:
CGO_ENABLED=0 GOOS=linux go build
chmod +x app
| 场景 | 推荐 |
|---|---|
| 本地开发 | 官方 Go + Ubuntu |
| 生产交付 | Docker |
| 系统级安装 | .deb |
| 跨平台 | 交叉编译 |
如果你愿意,可以告诉我:
我可以直接给你一个完整可用模板。