假设我有一个已安装、正在运行且最新的系统,并且想要验证其上所有软件包安装的文件是否与相应软件包维护者打包的文件相同。
实际上,我想要一个文件列表,这些文件在我“现在”安装的文件和在空白系统上使用同一组软件包重新安装时得到的文件之间有所不同。如果没有实际重新安装并比较结果,我将如何生成这样的文件列表?
我意识到存在一些差异(例如配置文件)是可以预料的,但这没关系。
我主要对 Debian Wheezy 感兴趣,但一个好的答案是探索一种解决方案,该解决方案可以与基于相同包管理基础设施(apt、dpkg 等)的任何相当现代的 Linux 发行版一起使用。
答案1
完成此操作的一种方法是使用命令debsums
。
$ debsums <package>
例子
$ 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
答案2
您可以使用
dpkg -V <package>
我测试了它,它也适用于配置文件。
修改/etc/iceweasel/profile/bookmarks.html
并运行后dpkg -V iceweasel
,得到以下输出
??5?????? c /etc/iceweasel/profile/bookmarks.html
请注意,仅显示修改过的文件,并且根据dpkg 手册页,输出格式类似于rpm
。