如何检查 aptitude 是否做了某事?

如何检查 aptitude 是否做了某事?

我有一个 CI 构建过程,在此过程中我从本地 reprepro 安装 debian 软件包。

我有一个Makefile确实调用 aptitude 从它自己的存储库安装包的方法,如下所示

sudo aptitude -y install foobar >> aptitude.log 2>&1

现在可能会发生 aptitude 存在冲突,无法解决或存储库不提供包“foobar”的新版本。在这两种情况下 aptitude 都不会安装任何东西。但

echo $?

在 aptitude 调用之后,Makefilealways returns 0。您建议采用什么方式来检查 aptitude 是否确实安装了任何东西?如果退出代码始终为 ,那么我能想到的唯一办法是查找 aptitude 输出的最后一行0

答案1

尝试使用dpkg-query,它会打印有关已安装软件包的信息

示例:

dpkg-query -W -f='${Status} ${Version}\n' foobar

将导致

No packages found matching foobar.

运行dpkg-query --help以获取更多信息

答案2

/var/lib/dpkg/info由于您想要检查安装(而不是升级)是否顺利,因此您可以计算运行之前和之后的文件数量aptitude。不过,这并不是特别稳健。

相关内容