如何从源代码构建debian包时自动满足“.dsc”文件中的依赖项?

时间:2012-01-21 17:11:32

标签: debian dpkg

当我下载一些包源时(例如foo- [ver] .orig.tar.gz,foo- [ver] .dsc),我在使用dpkg-source -x foo-[ver].dsc和{{1}时经常会遇到依赖性问题}。在这种情况下,我必须逐个安装构建依赖项。是否有一些工具可以自动处理这种情况,例如dpkg-buildpackage -us -uc ...

4 个答案:

答案 0 :(得分:7)

在尝试构建包时,以下内容应该抓取所有依赖项:

apt-get build-dep [package-name]

此外,如果需要,apt-get可以编译源包:

apt-get --build [package-name]

答案 1 :(得分:2)

pbuilder只是这项工作的工具。 pbuilder将在安装时在tarball中设置最小分布。要构建.dsc文件,请提供该文件,并pbuilder解压缩tarball chroot,安装所有必需的构建依赖项并编译该程序包。作为此过程的结果,您的构建结果独立于主机的当前配置。

答案 2 :(得分:2)

有几种方法可以解决这个问题(从其他回复中可以看出)。对于已经是存储库一部分的包,您只需使用:

apt-get build-dep pkgname

对于本地包,其中一个:

apt-get build-dep source-dir/
apt-get build-dep source-name.dsc
/usr/lib/pbuilder/pbuilder-satisfydepends* --control source-name.dsc
mk-build-deps --install source-name.dsc
pbuilder build source-name.dsc
sbuild source-name.dsc

可能还有其他解决方案,但以上是最广泛使用的解决方案。

答案 3 :(得分:-1)

我从debian / control中提取Build-Depends,然后用apt安装它们。 一些标准软件包没有被提及为Build-Depends(例如build-essentials),并且需要在debuild中默默地使用。

pkgs=$(grep Build-Depends debian/control|sed 's/^Build-Depends: //g)
pkgs=$(echo $pkgs|sed "s/[() ]//g"|tr "," " ")
apt-get install $pkgs build-essential