如何构建需在用户环境编译的Debian源码.deb安装包?
生成需在用户环境编译的Debian/Ubuntu Deb包
背景
我有一个C++应用程序,需要部署给Ubuntu/Debian用户,但存在一项限制:该应用程序不能为预编译二进制文件,必须在用户环境中完成编译。我已完成以下步骤:
- 执行
tar -czf project_1.0.orig.tar.gz project-1.0生成.orig压缩包 - 执行
dh_make生成debian目录 - 更新
debian/control和debian/rules文件 - 执行
dpkg-source -b生成.dsc和.debian.tar.xz文件
当前目录结构:
|-- project-1.0 | |-- debian | | |-- changelog | | |-- control | | |-- copyright | | |-- rules | | `-- source | `-- src | |-- CMakeLists.txt | `-- main.cpp |-- project_1.0-1.debian.tar.xz |-- project_1.0-1.dsc `-- project_1.0.orig.tar.gz
debian/control内容:
Source: project Section: misc Priority: optional Maintainer: My Name <my.mail@example.com> Build-Depends: cmake, debhelper-compat (= 12), qtbase5-dev, qtdeclarative5-dev Standards-Version: 4.5.0 Package: project Architecture: any Multi-Arch: foreign Depends: ${misc:Depends}, ${shlibs:Depends}, qml-module-qtquick2 Description: Super usefull tool
debian/rules内容:
#!/usr/bin/make -f %: dh $@ override_dh_auto_configure: dh_auto_configure -- -DIS_DEV=OFF
请问下一步该如何操作以获取.deb文件?
解决方案
要生成最终的.deb包,需在用户环境中执行以下步骤:
1. 安装编译依赖
先确保用户系统安装好编译所需的依赖包,执行:
sudo apt-get build-dep project
该命令会自动安装debian/control中Build-Depends字段列出的所有依赖。
2. 解压源码包并进入目录
使用dpkg-source解压生成的.dsc文件:
dpkg-source -x project_1.0-1.dsc cd project-1.0
3. 构建Deb包
在源码目录中执行dpkg-buildpackage完成编译和打包:
dpkg-buildpackage -us -uc
-us:不签名源码包-uc:不签名.changes文件
执行完成后,上级目录会生成最终的.deb文件,同时还有.changes、.buildinfo等构建产物。
额外说明
- 若想加快编译速度,可添加
-j$(nproc)参数启用多线程编译:dpkg-buildpackage -us -uc -j$(nproc) - 若构建出错,可检查
debian/control的依赖是否完整,或debian/rules的编译参数是否正确。
内容的提问来源于stack exchange,提问作者Edward Sarkisyan
相关产品推荐
相关产品推荐

