打开终端,执行以下命令更新软件包列表并安装Golang:
sudo apt update
sudo apt install golang-go
安装完成后,通过go version验证是否成功,若输出类似go version go1.22.5 linux/amd64则表示安装完成。
若需要特定版本的Golang,可通过以下步骤手动安装:
https://golang.org/dl/),下载对应Debian架构的.tar.gz文件(如go1.22.5.linux-amd64.tar.gz);/usr/local目录:sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
~/.bashrc(或~/.profile),添加以下内容:export GOROOT=/usr/local/go # Go安装目录
export GOPATH=$HOME/go # 工作目录(存放代码与依赖)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加Go命令到PATH
source ~/.bashrc
go version确认。GOROOT:指向Go的安装目录(手动安装时需设置,APT安装默认为/usr/local/go);GOPATH:工作目录,用于存放Go项目代码(src)、依赖包(pkg)和编译后的二进制文件(bin);PATH:需包含$GOROOT/bin和$GOPATH/bin,以便全局使用go命令及第三方工具。将以下内容添加到~/.bashrc(或~/.profile)文件末尾:
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
执行source ~/.bashrc使配置立即生效。通过go env命令可验证环境变量是否正确设置。
在$GOPATH/src目录下创建项目文件夹(如$GOPATH/src/myapp),并编写main.go文件:
package main
import "fmt"
func main() {
fmt.Println("Hello, Debian Golang!")
}
保存后,通过go mod init myapp初始化Go模块(推荐使用Go Modules管理依赖)。
go build -o myapp,生成可执行文件(默认与目录同名);CGO_ENABLED=0 go build -o myapp -ldflags '-extldflags "-static"'
此命令会生成纯静态二进制文件,可在任何Linux系统上运行。debuild工具(推荐,遵循Debian规范)sudo apt install devscripts build-essential fakeroot
dh_make --createorig -s,生成debian目录(包含control、rules等模板文件);debian/control文件:填写软件包元数据,示例如下:Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Your Name <your.email@example.com>
Description: A simple Golang application
This is a demo Golang app packaged for Debian.
debian/rules文件:确保文件可执行(chmod +x debian/rules),内容修改为:#!/usr/bin/make -f
%:
dh $@ --buildsystem=go
debuild -us -uc(-us -uc表示跳过签名),生成的.deb文件位于父目录(如../myapp_1.0.0_amd64.deb)。mkdir -p myapp/DEBIAN myapp/usr/bin
control文件:在myapp/DEBIAN目录下创建control文件,内容同上;myapp复制到myapp/usr/bin/;dpkg-deb --build myapp,生成myapp.deb文件。sudo dpkg -i ../myapp_1.0.0_amd64.deb # 替换为实际路径
myapp # 若安装路径为/usr/bin/,可直接运行
sudo dpkg -r myapp # 卸载软件包
Hello, Debian Golang!,表示打包成功。go mod init <module-name>(如go mod init myapp);go get <package-name>;go mod tidy。通过GitLab CI或GitHub Actions实现代码提交后自动构建与打包。示例如下(.gitlab-ci.yml):
stages:
- build
- package
build:
stage: build
script:
- go build -o myapp
package:
stage: package
script:
- debuild -us -uc
only:
- tags # 仅在打标签时触发
每次推送代码并打标签时,CI会自动构建.deb包。
对于需要容器化的应用,使用多阶段构建减少镜像大小:
# 构建阶段(使用Golang官方镜像)
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp .
# 运行阶段(使用轻量级Debian镜像)
FROM debian:bookworm-slim
COPY --from=builder /app/myapp /usr/local/bin/myapp
CMD ["myapp"]
构建命令:docker build -t myapp:latest .。