如何验证RPM数据库?

如何验证RPM数据库?

我需要以适合脚本编写的方式验证 RPM 数据库(不是 RPM,而是 中的数据库/var/lib/rpm)没有损坏或不一致(即,如果良好则返回退出代码 0,如果损坏则返回其他代码)。我可以用来db_verify验证各个伯克利数据库,但假设各个伯克利数据库完全有效,并且数据库之间存在不一致。我尝试删除(重命名)数据库,但rpm -qa --dump没有注意到,rpm -Va只是重新生成它并发出警告。我想我可以在输出中查找字符串“警告:”,但这似乎不可靠。此外我并不是真的想验证文件,我想验证数据库。我搜索了 OpenSuSE RPM 相关的软件包,但没有找到合适的东西。有什么建议么?我更喜欢一些旨在进行彻底验证的东西,而不是仅仅进行转储。

答案1

--verifydb至少从 rpm-4.1 起就有一个未记录的标志。

rpm/rpmdb.c:

{ "verifydb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
    &mode, MODE_VERIFYDB, N_("verify database files"), NULL},

所以rpm --verifydb应该做你正在寻找的事情。

相关内容