![检查 debian/control Build-Depends: 向后移植软件包时是否可以满足要求](https://linux22.com/image/51351/%E6%A3%80%E6%9F%A5%20debian%2Fcontrol%20Build-Depends%3A%20%E5%90%91%E5%90%8E%E7%A7%BB%E6%A4%8D%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%97%B6%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%BB%A1%E8%B6%B3%E8%A6%81%E6%B1%82.png)
Debian/Ubuntu 问题在这里。我经常将软件包从较新的 Ubuntu 发行版反向移植到较旧的发行版 (LTS)。我下载(通过 dget)一个 Debian 源代码,然后 cd 进入其中并输入debuild -b
.然后它会说类似的话
dpkg-checkbuilddeps: Unmet build dependencies: dh-autoreconf gnome-pkg-tools (>= 0.7) yelp-tools gtk-doc-tools (>= 1.12) pkg-config libglib2.0-dev (>= 2.29.14) libgstreamer1.0-dev (>= 0.11.92) libgstreamer-plugins-base1.0-dev (>= 0.11.92) libxml2-dev (>= 2.6.0) libsm-dev libice-dev libgtk-3-dev (>= 3.0.0) libcanberra-dev (>= 0.1) libcanberra-gtk3-dev (>= 0.1) libnautilus-extension-dev (>= 2.91.90) libburn-dev (>= 0.4.0) libisofs-dev (>= 0.6.4) libtotem-plparser-dev (>= 2.32) libunique-dev (>= 1.0.0) libnotify-dev (>= 0.6.1) gobject-introspection (>= 0.6.3) libgirepository1.0-dev (>= 0.6.3) libappindicator3-dev (>= 0.0.7) libunity-dev (>= 5.0.0)
apt-get build-dep
帮助到一定程度(但下载依赖项当前的包,不适用于我要向后移植的包)。我可以手动安装所有列出的依赖项并重试debuild
以查看是否dpkg-checkbuilddeps
成功,但这在时间(和磁盘空间)上是昂贵的。
我想我真的需要一个工具(或脚本)来检查当前存储库Build-Depends:
的要求是否debian/control
可以满足(或者如果不能满足,我需要向后移植哪些其他包)。有没有一种简单的方法可以实现这一目标?
答案1
有些事情可以帮助使向后移植变得更容易。第一个是mk-build-deps
。当从源目录运行时,它将创建一个依赖于当前包的虚拟包。由于此创建取决于您正在构建的包,而不是当前存储库中的包,因此如果某些依赖项无法满足,您会立即注意到。
您可以使用一种方法来检查软件包是否可以从 sid 向后移植到稳定版。 irc.oftc.net 和 irc.freenode.net 上的#debian 中的 ircbot“judd”有一个checkbackport
命令。这是一个例子:
[23:53] <jordanm> checkbackport apache2
[23:53] <judd> Backporting package apache2 in sid→wheezy/i386: unsatisfiable build dependencies: Build-Depends: libaprutil1-dev (>= 1.5.0).
您自己也可以实现类似的东西。不幸的是,judd 使用的方法查询UDD(终极 Debian 数据库),这是相当大的。贾德的源代码可用这里如果您对它的实施方式感兴趣。