你是否曾经想过,为什么在Linux系统上安装的某个二进制文件或软件包没有按照预期正常工作,意味着它不能正确地执行预定功能,或者甚至根本无法启动?
实际上,在下载软件包时,可能会遇到网络连接不稳定或意外断电等问题,这可能导致软件包的安装出现损坏。保持系统上软件包的完整性是非常重要的,所以验证系统上的文件与软件包中存储的信息是否一致就显得很有必要。
在本文中,小编将介绍如何在基于Debian发行版(例如Ubuntu和Mint)上验证已安装软件包的MD5校验和,从而确定文件是否完整。
如何根据MD5校验和验证已安装的软件包
在Debian和Ubuntu系统上,可以使用debsums
工具检查已安装软件包的MD5校验和。如果想在安装debsums软件包之前了解更多信息,可以使用apt-cache命令:
apt-cache search debsums
接下来,使用apt命令安装它:
sudo apt install debsums
接下来将使用该debsums
工具来验证已安装包的MD5值,一起来看看吧。
注意:以下所有命令使用了sudo
,因为某些文件对于普通用户可能没有读取权限。
了解debsums的输出
debsums
命令的输出在左侧显示文件位置,在右侧显示检验结果。一般可能会出现以下三种结果:
- OK:表示文件的MD5值正确,没有被修改。
- FAILED:表示文件的MD5和不匹配,可能已被更改或损坏。
- REPLACED:表示该文件已被其它软件包中的文件替换。
当你不带任何选项运行debsums
时,它会将系统中每个文件与软件包自带的MD5校验和文件进行比对:
sudo debsums
检查所有文件的MD5校验和是否有变化
要启用对每个文件以及配置文件的变更检查,请添加-a
或--all
选项:
sudo debsums --all
注意:“debsums”命令快速检查核心程序文件是否被篡改;“debsums –all”命令完整检查,包括用户可能修改的配置文件。
仅检查配置文件的MD5值
此外,还可以使用-e
或--config
选项仅检查配置文件,而不检查所有其它包文件:
sudo debsums --config
仅显示已更改的文件
要在debsums的输出中仅显示更改的文件,请使用-c
或--changed
选项:
sudo debsums --changed
列出文件缺失的MD5值
要显示没有MD5校验和信息的文件,请使用-l
或--list-missing
选项。在小编的系统上,此命令没有显示任何文件:
sudo debsums --list-missing
验证单个包的MD5值
你还可以通过指定包的名称来验证单个包的MD5校验和:
sudo debsums curl
忽略Debsums中的文件权限错误
假设你在不使用sudo的情况下以普通用户身份运行debsums,可以使用--ignore-permissions
选项将权限错误视为警告来处理,从而不会因此中断整个文件校验流程:
debsums --ignore-permissions
如何从.Deb文件生成MD5值
-g
选项告诉debsums
从.deb
文件的内容中生成MD5检验和。以下是你可以使用的附加选项说明:
missing
:指示debsums为那些没有提供MD5校验和的包,从.deb
文件中生成校验和。all
:指示debsums忽略磁盘上的MD5校验和,而是使用.deb
文件中提供的,或如果不存在,则从.deb
文件中生成。keep
:告诉debsums将提取/生成的校验和写入/var/lib/dpkg/info/package.md5sums文件中。nocheck
:表示提取或生成的校验和不会与已安装的包进行比对,仅生成不做校验。
当你查看/var/lib/dpkg/info/目录的内容时,会看到各个软件包所包含的文件的MD5校验和信息,如下所示:
cd /var/lib/dpkg/info ls *.md5sums
你可以通过运行以下命令为apache2包生成MD5校验和:
sudo debsums --generate=missing apache2
由于小编系统上的apache2包已经有MD5总和,它将显示与运行以下命令相同的输出:
sudo debsums apache2
如果要了解更多有趣的选项和使用信息,请查看debsums手册页:
man debsums
结论
以上就是验证已安装Debian/Ubuntu软件包MD5校验和的简单方法,通过将文件系统中的文件与软件包中存储的信息进行比对,可以帮助避免在系统上安装和执行损坏的二进制文件或软件包文件,从而顺利安装的某个二进制文件或软件包。