当我构建 debian 软件包时,通常会构建许多捆绑在一起的相关软件包,以及foo-dbgsym-*
版本和foo-doc
软件包。
例如,即使是相对简单的包,例如make
,也会构建额外的包:
make-dbgsym_4.2.1-1.2_amd64.deb
make-guile-dbgsym_4.2.1-1.2_amd64.deb
make-guile_4.2.1-1.2_amd64.deb
make_4.2.1-1.2_amd64.deb
我可以告诉构建系统只构建make
而不构建吗make-guile
?
这是我用于构建包的过程:
apt-get source make
cd make*
dpkg-buildpackage --build=binary --no-sign
是否有一个通用流程可以指定我想要构建哪些包?
Make 是一个简单的例子,但是较大的包会构建许多我不感兴趣的包版本,这些版本需要安装依赖库,并且构建过程需要更长的时间。
答案1
dbgsym
可以使用禁用包构建noautodbgsym
选项:
DEB_BUILD_OPTIONS=noautodbgsym dpkg-buildpackage -us -uc
--build
通过更改上的选项,也可以仅构建依赖于体系结构或独立于体系结构的包dpkg-buildpackage
。
除此之外,没有通用的方法来挑选和选择要构建的包和要安装的依赖项。特别是,构建依赖项并不与它们相关的二进制包绑定。
一些包支持建立档案;您可以通过在 中查找Build-Profiles
和/或尖括号依赖项来确定这一点debian/control
。在此类包上,dpkg-buildpackage
的-P
选项选择适当的配置文件,有时与构建选项结合使用。例如,在带有nocheck
配置文件的包上,
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -Pnocheck
将跳过与测试相关的构建依赖项(如果有)并跳过运行测试。
事实上,最新版本的make
软件包声称提供了noguile
构建配置文件,因此应该可以跳过 Guile
dpkg-buildpackage -Pnoguile -us -uc
除了那个配置文件定义不完整。
始终可以进行编辑debian/control
以删除不相关的包,并debian/rules
删除不相关的构建步骤。