debian打包小结

背景

业务需要,打一个openstack组件的deb包

openstack组件有setup.py可直接支持打rpm包,但不支持deb包,所以手动打deb包

用了dh_make准备打包文件,然后用debuild或dpkg-buildpackages打deb包

步骤

方法有很多,我用的是debuild和dpkg-buildpackages(选一个就行)

下载源代码与准备打包文件

先用dh_make生成打包的依赖文件,先装dh-make:apt install dh-make

装好dh-make后,把需要打包的源代码下载下来,然后重命名为代码名-版本号(如nova-1.2.3,dh_make要求的格式,必须这么搞)

重命名完了,在当前目录创建一个源代码文件夹的tar.gz包:tar -cvzf xxx.tar.gz xxx(xxx是要打包的代码目录)(dh_make打包需要这样一个tar.gz文件)

创完tar.gz,cd到源代码目录里,执行dh_make -f ../xxx.tar.gz -s -c apache -y,执行成功后,目录下会生成debian目录,目录底下放的是打包需要的文件

安装打包的依赖包

比如python3-all, devscripts, dh-python,可能还有,apt install pkga pkgb pkgc ...安装即可

配置

需要配置debian目录(dh_make生成的目录)底下的文件,主要是文件control和rules

control

需要添加依赖python3-all, dh-python,不然报错

rules

以下配置可以直接在dh $@后一行里加就行

根据你的py版本,添加 --with python3 或 --with python2 或 --with python2,python3

要是报错不能用python-disutils,可以在行末加--buildsystem=pybuild

bash 复制代码
%:
        dh $@ --with python3 --buildsystem pybuild --disable tests

禁用测试(可选)

打包时如果源代码有测试用例,打包时可能会执行测试用例,如果测试失败会导致打包失败,此时可禁用测试,可在dh $@行末添加--disable tests,或者在下面新增行(如下)

bash 复制代码
override_dh_auto_test:
        @echo "Testing is disabled." > debian/test.log

打包

cd到源代码目录下,执行debuild,打包顺利的话,结束后会在父目录下生成一个.deb后缀文件,就是目标文件

问题与报错

Q lease use the third-party "pybuild" build system instead of python-distutils && dh_auto_clean: error: This feature was removed in compat 12

A 修改debian/rules为dh $@ --with python3 --buildsystem=pybuild

Q Please add appropriate interpreter package to Build-Depends

A 查看pybuild手册,不但要把依赖包apt安装,还要把依赖包名加到debian/control里

Q dh: error: unable to load addon python3: Can't locate Debian/Debhelper/Sequence/python3.pm in @INC (you may need to install the Debian::Debhelper::Sequence::python3 module) (@INC entries checked: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.38.2 /usr/local/share/perl/5.38.2 /usr/lib/x86_64-linux-gnu/perl5/5.38 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.38 /usr/share/perl/5.38 /usr/local/lib/site_perl) at (eval 15) line 1.

A 在debian/control依赖添加dh-python

参考资料

Linux 中用 dh_make 将 Qt + CMake 项目打包为 deb 文件_linux qt 软件安装包制作工具-CSDN博客​​​​​​

相关推荐
企业解惑小助手8 分钟前
如何禁止文字复制?企业文档防复制项目需求拆解方案
运维·数据库·安全
蓝速科技16 分钟前
酒店门店 AI 数字人前台场景适配与落地指南
大数据·运维·数据结构·数据库·人工智能·科技
yyk3332424 分钟前
Linux常见的基础命令
linux·运维·服务器
名字还没想好☜25 分钟前
Docker 镜像瘦身进阶:用 distroless/scratch 把 Go 服务打到 10MB,以及没 shell 怎么调试
运维·docker·容器·golang·kubernetes
JavaPub-rodert34 分钟前
Docker 深入理解:从容器原理到生产环境最佳实践
运维·docker·容器
aiot189189352182 小时前
核芯物联蓝牙AOA高精度定位生态合作案例分享金库定位踩坑实录
大数据·运维·网络·人工智能·蓝牙aoa
TomEval2 小时前
【接口自动化】13 - 接口数据驱动与报告
运维·windows·自动化
程序员无隅2 小时前
Codex 实战:用 AI 写运维脚本
运维·人工智能
Soari2 小时前
Linux 内核对比:PREEMPT_DYNAMIC vs PREEMPT_RT
linux·运维·ubuntu
商业看点解说2 小时前
数据中心运维管理软件平台推荐
运维