在 Ubuntu 上“打 Golang 包”通常指两件事之一:
.deb 安装包下面我分别说明,你可以按需选择。
sudo apt update
sudo apt install golang-go
验证:
go version
go build -o myapp main.go
生成 myapp 二进制文件。
例如编译 Linux 64 位:
GOOS=linux GOARCH=amd64 go build -o myapp
.deb 包(推荐方式)dpkg-deb(最简单)mkdir -p myapp-deb/DEBIAN
mkdir -p myapp-deb/usr/bin
cp myapp myapp-deb/usr/bin/
nano myapp-deb/DEBIAN/control
内容示例:
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@example.com>
Description: My Go application
A simple Go program.
dpkg-deb --build myapp-deb
生成:
myapp-deb.deb
sudo dpkg -i myapp-deb.deb
fpm(更现代,推荐)sudo apt install ruby ruby-dev rubygems build-essential
sudo gem install fpm
fpm -s dir -t deb \
-n myapp \
-v 1.0.0 \
-a amd64 \
--prefix /usr/bin \
myapp
生成:
myapp_1.0.0_amd64.deb
nfpm(Go 生态,专业)适合 CI/CD:
sudo apt install nfpm
nfpm.yaml 示例:
name: myapp
arch: amd64
version: 1.0.0
maintainer: you <you@example.com>
description: My Go app
contents:
- src: ./myapp
dst: /usr/bin/myapp
打包:
nfpm package -f nfpm.yaml -t myapp.deb
myapp-deb/lib/systemd/system/myapp.service/usr/bin/myapp 可执行chmod 755 myapp
如果你能告诉我:
我可以给你更精确的打包模板。