Aptitude 针对 deb/repo 验证已安装的软件包

Aptitude 针对 deb/repo 验证已安装的软件包

我正在从电源故障导致的磁盘损坏中恢复过来。所有配置和非存储库文件都已备份,并且我有一个已安装软件包的列表,因此我可以重新开始这次但我正在寻找更好的方法,以防下次我无法承受那么多的停机时间。

我知道 apt 会保留已安装软件包的 deb 文件。升级时,apt 有时会询问我是否要保留我的配置或使用新配置,因此 apt 知道配置和二进制文件之间的区别,以及安装后修改了哪些内容(哈希?)。

有谁知道如何检查已安装的二进制文件与 deb 的一致性,而无需花费磁盘写入来提取 deb?适用于一个给定软件包的解决方案可以适用于循环遍历apt-mark已安装软件包的列表,并将失败的软件包输入apt install --reinstall;我只需要验证逻辑。

我使用的是 apt 1.4.9 和 dpkg-deb 1.18.25。虽然我认为其他细节并不重要,但我在 armhf(raspberry pi zero w)上运行 raspian。

答案1

终于找到了。dpkg -V,它使用存储的 md5sum。过滤掉带有 ac 标志的,因为它们是配置。这是我得到的:

sudo dpkg -V | egrep --color=auto '^.{9} ' | rev | cut -d\ -f 1 | rev | xargs dpkg-query -S | cut -d: -f1 | sort -u > corrupted_packages.txt

一旦完成,我计划做类似的事情sudo xargs apt install --reinstall <corrupted_packages.txt

相关内容