Mar*_*ter 2 compiling debian dpkg
当我构建 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
Run Code Online (Sandbox Code Playgroud)
我可以告诉构建系统只构建make
而不构建吗make-guile
?
这是我用于构建包的过程:
apt-get source make
cd make*
dpkg-buildpackage --build=binary --no-sign
Run Code Online (Sandbox Code Playgroud)
是否有一个通用流程可以指定我想要构建哪些包?
Make 是一个简单的例子,但是较大的包会构建许多我不感兴趣的包版本,这些版本需要安装依赖库,并且构建过程需要更长的时间。
dbgsym
可以使用构建选项禁用noautodbgsym
软件包:
DEB_BUILD_OPTIONS=noautodbgsym dpkg-buildpackage -us -uc\n
Run Code Online (Sandbox Code Playgroud)\n通过更改 .xe2x80x99s--build
上的选项,也可以仅构建依赖于体系结构或独立于体系结构的包dpkg-buildpackage
。
除此之外,\xe2\x80\x99s 没有通用的方法来挑选和选择要构建的包和要安装的依赖项。特别是,构建依赖项\xe2\x80\x99t 与它们相关的二进制包无关。
\n一些软件包支持构建配置文件;您可以通过在 中查找Build-Profiles
和/或尖括号依赖项来确定这一点debian/control
。在此类包上,dpkg-buildpackage
\xe2\x80\x99s-P
选项选择适当的配置文件,有时与构建选项结合使用。例如,在带有nocheck
配置文件的包上,
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -Pnocheck\n
Run Code Online (Sandbox Code Playgroud)\n将跳过与测试相关的构建依赖项(如果有)并跳过运行测试。
\n事实上,最新版本的make
软件包声称提供了noguile
构建配置文件,因此应该可以跳过 Guile
dpkg-buildpackage -Pnoguile -us -uc\n
Run Code Online (Sandbox Code Playgroud)\n除了配置文件定义不完整之外。
\n始终可以进行编辑debian/control
以删除不相关的包,并debian/rules
删除不相关的构建步骤。