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目标
使用方法
- 确保你的项目有git标签(若没有可执行
git tag v1.0.0创建),VERSION变量会自动获取当前版本信息 - 执行
sudo make(已修改默认目标)或sudo make deb,当前目录会生成类似your-go-app_1.0.0_amd64.deb的文件 - 要清理deb构建残留,执行
make deb-clean
内容的提问来源于stack exchange,提问作者DevOps
相关产品推荐
相关产品推荐

