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

如何构建需在用户环境编译的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:55:31