若只需将Golang程序打包为可在目标机器上运行的可执行文件(无需安装依赖),可按以下步骤操作:
sudo apt update && sudo apt install golang-go -y
~/myapp)中创建main.go文件,示例代码:package main
import "fmt"
func main() {
fmt.Println("Hello, Debian Packaging!")
}
~/.bashrc文件,添加以下内容(确保Go模块支持):export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export GO111MODULE=on # 启用Go模块
运行source ~/.bashrc使配置生效。go build命令,生成可执行文件(如myapp):go build -o myapp main.go
若需静态链接(避免目标机器缺少CGO依赖),可添加-ldflags参数:go build -o myapp -ldflags '-extldflags "-static"' main.go
tar命令将可执行文件压缩为.tar.gz格式(便于传输):tar -czvf myapp.tar.gz myapp
压缩完成后,可通过FTP、SCP等方式分发myapp.tar.gz。若需将Golang程序打包为符合Debian规范的.deb文件(便于通过dpkg安装、卸载),需遵循以下步骤:
debhelper(Debian打包辅助工具):sudo apt update && sudo apt install golang-go debhelper -y
main.go并通过go build生成静态链接的可执行文件(.deb包要求二进制文件包含所有依赖):go build -o myapp -ldflags '-extldflags "-static"' main.go
mkdir -p myapp/DEBIAN myapp/usr/bin
DEBIAN目录:存放包元数据(如control文件);usr/bin目录:存放编译后的可执行文件(符合Debian文件系统层级规范)。myapp/DEBIAN目录下创建control文件,内容示例如下(需根据项目修改):Package: myapp # 包名(小写字母,无空格)
Version: 1.0.0 # 版本号(遵循语义化版本)
Section: utils # 所属类别(如utils/tools)
Priority: optional # 优先级(optional/recommended/required)
Architecture: amd64 # 目标架构(amd64/arm64等)
Maintainer: Your Name <your.email@example.com> # 维护者信息
Description: A brief description of your application. # 短描述(一行)
A longer description of your application. # 长描述(多行,缩进)
myapp二进制文件复制到myapp/usr/bin目录(确保安装后可通过命令myapp直接运行):cp myapp myapp/usr/bin/
myapp的父目录)下执行dpkg-deb命令,生成.deb文件:dpkg-deb --build myapp
执行完成后,当前目录将生成myapp.deb文件(如myapp_1.0.0_amd64.deb)。dpkg命令安装生成的.deb文件:sudo dpkg -i myapp.deb
安装完成后,运行myapp验证是否正常工作:myapp # 应输出:Hello, Debian Packaging!
-ldflags '-extldflags "-static"'),否则可能因缺少CGO依赖无法运行;github.com/gin-gonic/gin),需通过go mod tidy下载依赖,并确保静态链接包含所有依赖;control文件中的Architecture需与目标机器架构一致(如amd64对应64位Linux),Depends字段需列出所有依赖(如libc6)。