我正在创建一个 .deb 包,我已经到了可以表达大部分依赖项的地步。不幸的是,还有一些依赖项目前没有 .deb 包(例如 wdfs 或 couchdb,其中 .deb 文件太落后,并且尚不存在具有较新版本的文件),但可以在运行时确定。
表达这种包依赖性的最佳方式是什么?pos安装脚本?
http://www.debian.org/doc/debian-policy/ch-relationships.html
我正在创建一个 .deb 包,我已经到了可以表达大部分依赖项的地步。不幸的是,还有一些依赖项目前没有 .deb 包(例如 wdfs 或 couchdb,其中 .deb 文件太落后,并且尚不存在具有较新版本的文件),但可以在运行时确定。
表达这种包依赖性的最佳方式是什么?pos安装脚本?
http://www.debian.org/doc/debian-policy/ch-relationships.html
正确的解决方案是为缺少的组件创建 .deb 包,也许只是在您的私有存储库中。还有equivs
它允许您构建虚拟包,例如满足有问题的依赖关系,即基本上“我知道我在做什么;假设这个包已正确安装”。对于一次性作业,您还可以调用dpkg
with--force-depends
来实现相同的结果。
假设所需的缺失包不在后端或其他地方,最好的解决方案是为不存在的包创建 Debian 包。
正如您所料,kludge 用于测试 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 文件中添加安装说明。