若只需將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)。