我知道我可以.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
会在检查依赖关系之前放弃。