如何在从源代码构建Debian软件包时自动满足“.dsc”文件中的依赖关系?

5
当我下载一些软件包源代码时(例如foo-[ver].orig.tar.gz、foo-[ver].dsc),在使用dpkg-source -x foo-[ver].dsc和dpkg-buildpackage -us -uc等命令时,经常会遇到依赖问题。在这种情况下,我必须一个一个地安装构建依赖项。是否有一些工具可以自动处理这种情况,例如dpkg-source-dependencies -x foo-[ver].dsc?
4个回答

7

当尝试构建一个软件包时,以下命令可以获取所有的依赖项:

apt-get build-dep [package-name]

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

apt-get --build [package-name]


糟糕!感谢Gus的编辑。直到今天,我有时仍然会使用--build-dep - 旧习惯难改。 - John Kloian

4

有几种方法可以解决这个问题(从其他回复中可以看到)。对于已经是仓库的一部分的软件包,您可以简单地使用:

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

也许还有其他解决方案,但以上是最常用的。

2

pbuilder是处理这项任务的工具。在安装时,pbuilder将建立一个最小的发行版tarball。如果要构建一个.dsc文件,您只需提供该文件,然后pbuilder会解压tarball,进行chroot,安装所有必要的构建依赖项并编译软件包。由于此过程的结果,您的构建结果与主机机器的当前配置无关。


1
pbuilder有点复杂。我会尝试一下。无论如何还是谢谢。 - Vivodo

-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

1
еҪ“Build-DependsеҲ—еңЁеӨҡиЎҢж—¶пјҢжӯӨж–№жі•дёҚиө·дҪңз”ЁпјҢ并且无法еҺ»йҷӨ>=versionnumberдҝ®йҘ°з¬ҰгҖӮ - Stéphane Gourichon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接