根据当前系统检查 deb 依赖关系

根据当前系统检查 deb 依赖关系

我知道我可以.deb使用 列出 的依赖项dpkg --info,但是否有任何自动化的方法可以根据当前系统检查这些依赖项?我感兴趣的是状态:包是否会被干净地安装,或者是否会失败。

答案1

根据手册:dpkg -i --force-bad-path --dry-run foo.deb。但是,它不起作用,10 年前有人提交过关于此问题的错误报告

apt-get和中有相应的选项aptitude,但仅适用于通过 apt 获得的包。

答案2

这是一种非常 hack 的方法,但确实有效。

确保您不是 root,否则可能会覆盖某些系统文件。
创建一个临时目录并切换到该目录。

mkdir root
cp -as /var/lib/dpkg .
rm dpkg/lock dpkg/triggers/Lock
fakeroot dpkg --force-not-root --force-bad-path --admindir=dpkg --instdir=root --log=log -i mypackage.deb

这将解压软件包,然后在 stderr 上报告缺少任何依赖项。即使没有由于脚本失败而导致缺少依赖项,它也可能返回非零状态postinst

我还没有尝试过带有脚本的包preinst,可能dpkg会在检查依赖关系之前放弃。

相关内容