You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下如何通过Makefile创建.deb包并修改现有Go项目Makefile

在Ubuntu中通过Makefile为Go项目生成.deb包

作为Makefile新手,你可以通过以下步骤修改现有Go项目的Makefile,实现执行sudo make后生成.deb包:

第一步:安装依赖工具

首先在Ubuntu上安装生成deb包所需的工具:

sudo apt install devscripts debhelper dh-make

第二步:修改Makefile

1. 添加DEB包配置变量

在现有变量定义区域(比如VERSION=$(shell git describe --dirty --tags --always)之后)添加以下配置,记得替换成你的项目信息:

# DEB包构建相关配置
PACKAGE_NAME := "your-go-app"  # 替换为你的应用包名
MAINTAINER := "Your Name <your-email@domain.com>"  # 替换为你的维护者信息
# 适配deb版本格式:去掉版本号前缀v,将git的-分隔符替换为+git
DEB_VERSION := $(shell echo $(VERSION) | sed 's/^v//' | sed 's/-/+git/')
DEB_BUILD_ROOT := deb-build
DEB_PACKAGE_DIR := $(DEB_BUILD_ROOT)/$(PACKAGE_NAME)_$(DEB_VERSION)_amd64

2. 添加deb构建与清理目标

在Makefile末尾添加以下目标:

deb: build  # 依赖build目标,确保先完成二进制编译
	# 创建deb包所需的目录结构
	mkdir -p $(DEB_PACKAGE_DIR)/usr/bin
	mkdir -p $(DEB_PACKAGE_DIR)/DEBIAN

	# 将编译好的二进制文件复制到deb包的/usr/bin目录
	cp bin/* $(DEB_PACKAGE_DIR)/usr/bin/

	# 生成DEBIAN/control元数据文件
	cat > $(DEB_PACKAGE_DIR)/DEBIAN/control << EOF
Package: $(PACKAGE_NAME)
Version: $(DEB_VERSION)
Architecture: amd64
Maintainer: $(MAINTAINER)
Description: 你的Go应用描述信息  # 替换为你的应用描述
EOF

	# 构建deb包,--root-owner-group确保文件权限符合系统要求
	dpkg-deb --build --root-owner-group $(DEB_PACKAGE_DIR)

	# 将生成的deb包移动到当前工作目录
	mv $(DEB_BUILD_ROOT)/$(PACKAGE_NAME)_$(DEB_VERSION)_amd64.deb .

deb-clean: clean
	# 清理deb构建目录和生成的deb包
	rm -rf $(DEB_BUILD_ROOT)
	rm -f $(PACKAGE_NAME)_*.deb

3. 设置默认执行目标(可选)

如果你希望直接执行sudo make就生成deb包,将原Makefile中的:

.DEFAULT: help # Running Make will run the help target

修改为:

.DEFAULT: deb  # 执行make默认运行deb目标

使用方法

  1. 确保你的项目有git标签(若没有可执行git tag v1.0.0创建),VERSION变量会自动获取当前版本信息
  2. 执行sudo make(已修改默认目标)或sudo make deb,当前目录会生成类似your-go-app_1.0.0_amd64.deb的文件
  3. 要清理deb构建残留,执行make deb-clean

内容的提问来源于stack exchange,提问作者DevOps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:21:00