我有一个 debian(技术上是 ubuntu)源包,即 .dsc、.tar.gz 等,我想构建它。失败了dpkg-buildpackage
,因为我没有所有的构建依赖项。
通常我会使用apt-get build-dep
,但这个包不在 apt 中。
给定源包,是否有一种“干净”、“正确”的方式来安装所有构建依赖项。我知道我可以打开 debian/control 文件,但我很好奇是否有“正确”的方式。
我已经安装build-essential
并拥有所有正常的编译器等,这个包需要额外的软件。
使用
mk-build-deps
属于devscripts
.这是使用 ptman 建议的示例工作流程。
假设您已经下载了
.dsc
文件、.orig.*z
文件,也许还有一个.debian.*z
文件,然后使用以下命令解压缩源包:移动到提取的源文件夹并运行:
这将创建文件
[package_name]-build-deps_[version].deb
并安装它,并安装它建议的所有依赖项。现在您应该能够从源代码构建您的包:
完成后,您可以通过删除
build-deps
生成的包轻松删除引入的依赖项:实际上我可以使用
dpkg-checkbuilddeps
它来显示构建依赖项。这让我得到了我需要的 99% 的东西我通常使用
debuild
fromdevscripts
来构建包,如果相关,它会打印一行缺少的构建依赖。“正确”的方法是使用
pbuilder
或类似的方法,它将以最小的方式构建包chroot
,并且只需安装包指定的任何其他构建deps,这也消除了许多其他潜在问题(非打包库的本地安装例如)。文件 debian/control 列出了所有应该作为构建依赖安装的包。如果(无论出于何种原因)您在没有 apt 系统的情况下安装了一些必需的软件,那么只需从 debian/control 文件中删除相应的行,这样 dpkg-buildpackage 就不会知道这些软件包并且不会检查它们。
另一个技巧是直接执行构建指令,这也绕过了 dpkg-buildpackage 的任何额外检查,并且也不会通过执行
fakeroot ./debian/rules binary
而不是 dpkg-buildpackage 来执行构建文件的清理(有助于增量本地修复)。尝试: