如何声明对 .deb 包的非 .deb 二进制依赖?

Posted

技术标签:

【中文标题】如何声明对 .deb 包的非 .deb 二进制依赖?【英文标题】:how do i declare a non .deb binary dependency on a .deb package? 【发布时间】:2010-12-20 10:18:15 【问题描述】:

我正在创建一个 .deb 包,我已经到了可以表达大部分依赖项的地步。不幸的是,还有一些依赖项目前没有 .deb 包(例如 wdfs 或 couchdb,其中 .deb 文件太落后,并且尚不存在具有较新版本的文件),但可以在运行时确定。

表达这种包依赖关系的最佳方式是什么? pos 安装脚本?

http://www.debian.org/doc/debian-policy/ch-relationships.html

【问题讨论】:

这不是一个真正的编程问题。您可以询问 Debian 邮件列表之一。 【参考方案1】:

正确的解决方案是为缺少的组件创建 .deb 包,也许只是在您的私有存储库中。还有equivs 允许您构建虚拟包,例如以满足有问题的依赖关系,即基本上“我知道我在做什么;只要假设这个包已正确安装”。对于一次性作业,您还可以调用 dpkg--force-depends 以达到相同的结果。

【讨论】:

【参考方案2】:

假设所需的缺失包不在后端或其他地方,最好的解决方案是为不存在的包创建 Debian 包。

正如您所料,在 postinst 文件的配置部分测试包,例如,如果您的 postinst 是 #!/bin/bash

REQUIREDPACKAGE='python'
REQUIREDVERSION='Python 2.6.6'
if [ -z "$(which $REQUIREDPACKAGE)" -o "$($REQUIREDPACKAGE --version 2>&1)" != "$REQUIREDVERSION" ]; then
  echo "$REQUIREDPACKAGE @$REQUIREDVERSION is required"
  exit 99;
fi

如果您使用 kludge,则应在 README 中添加所有必需的非 debian 软件包,并可能在 INSTALL 文件中添加安装说明。

【讨论】:

以上是关于如何声明对 .deb 包的非 .deb 二进制依赖?的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下如何安装.deb文件?

dpkg安装deb包缺少依赖包的解决方法

dpkg安装deb缺少依赖包的解决方法

dpkg安装deb缺少依赖包的解决方法

对一个deb包的解压修改重新打包全过程方法

编写 Debian/Ubuntu deb 包的资源? [关闭]