如何验证包安装的文件与原始文件匹配?

use*_*ser 5 debian dpkg apt integrity

假设我有一个已安装、可运行且最新的系统,并且想验证其上的所有软件包安装文件是否与相应软件包维护者打包的文件相同。

实际上,我想要一个文件列表,这些文件在我“现在”安装的文件和我在空白系统上使用相同的软件包重新安装时会得到的文件之间存在某种差异。如果没有实际重新安装和比较结果,我将如何生成这样的文件列表?

我意识到有些差异(例如配置文件)是可以预料的,但这没关系。

我主要对 Debian Wheezy 感兴趣,但一个好的答案是探索一个解决方案,该解决方案适用于任何基于相同包管理基础设施(apt、dpkg 和朋友)的现代 Linux 发行版。

slm*_*slm 6

完成此操作的一种方法是使用命令debsums

$ debsums <package>
Run Code Online (Sandbox Code Playgroud)

例子

$ debsums xz-utils
/usr/bin/lzmainfo                                                             OK
/usr/bin/xz                                                                   OK
/usr/bin/xzdiff                                                               OK
/usr/bin/xzgrep                                                               OK
/usr/bin/xzless                                                               OK
/usr/bin/xzmore                                                               OK
/usr/share/doc/xz-utils/NEWS.Debian.gz                                        OK
/usr/share/doc/xz-utils/README.Debian                                         OK
/usr/share/doc/xz-utils/README.gz                                             OK
/usr/share/doc/xz-utils/copyright                                             OK
/usr/share/doc/xz-utils/extra/7z2lzma/7z2lzma.bash                            OK
/usr/share/doc/xz-utils/extra/scanlzma/scanlzma.c                             OK
/usr/share/doc/xz-utils/faq.txt.gz                                            OK
/usr/share/doc/xz-utils/history.txt.gz                                        OK
/usr/share/man/man1/lzmainfo.1.gz                                             OK
/usr/share/man/man1/xz.1.gz                                                   OK
/usr/share/man/man1/xzdiff.1.gz                                               OK
/usr/share/man/man1/xzgrep.1.gz                                               OK
/usr/share/man/man1/xzless.1.gz                                               OK
/usr/share/man/man1/xzmore.1.gz                                               OK
Run Code Online (Sandbox Code Playgroud)


Ort*_*kni 6

您可以使用

dpkg -V <package>
Run Code Online (Sandbox Code Playgroud)

我测试了它,它也适用于配置文件。

修改/etc/iceweasel/profile/bookmarks.html并运行后dpkg -V iceweasel,得到以下输出

??5?????? c /etc/iceweasel/profile/bookmarks.html
Run Code Online (Sandbox Code Playgroud)

请注意,仅显示修改过的文件,并且根据dpkg 手册页,输出格式类似于rpm.