如何在 Debian/Ubuntu Linux 中检查已安装软件包的 MD5 和
您是否想知道为什么系统上安装的给定二进制文件或软件包不能按照您的预期工作,这意味着它不能正常工作,也许它根本无法启动。
下载软件包时,您可能会面临网络连接不稳定或意外断电的挑战,这可能会导致安装损坏的软件包。
考虑到这是在系统上维护未损坏的包的一个重要因素,因此使用以下文章根据包中存储的信息验证文件系统上的文件是至关重要的一步。
建议阅读:了解如何在 Linux 中使用 MD5 校验和生成和验证文件
如何根据 MD5 校验和验证已安装的 Debian 软件包
在Debian/Ubuntu系统上,您可以使用debsums工具来检查已安装软件包的MD5总和。如果您想在安装之前了解有关 debsums 软件包的信息,您可以使用 APT-CACHE,如下所示:
apt-cache search debsums
接下来,使用 apt 命令安装它,如下所示:
sudo apt install debsums
现在是时候学习如何使用 debsums 工具来验证已安装软件包的 MD5sum 了。
注意:我在以下所有命令中使用了sudo,因为某些文件可能没有普通用户的读取权限。
此外,debsums 命令的输出在左侧显示文件位置,在右侧显示检查结果。您可以获得三种可能的结果,它们包括:
- OK – 表示文件的 MD5 和正确。
- FAILED – 显示文件的 MD5 和不匹配。
- 已替换 – 表示特定文件已被另一个包中的文件替换。
当您在没有任何选项的情况下运行它时,debsums 会根据库存 md5sum 文件检查系统上的每个文件。
sudo debsums
/usr/bin/a11y-profile-manager-indicator OK
/usr/share/doc/a11y-profile-manager-indicator/copyright OK
/usr/share/man/man1/a11y-profile-manager-indicator.1.gz OK
/usr/share/accounts/providers/facebook.provider OK
/usr/share/accounts/qml-plugins/facebook/Main.qml OK
/usr/share/accounts/services/facebook-microblog.service OK
/usr/share/accounts/services/facebook-sharing.service OK
/usr/share/doc/account-plugin-facebook/copyright OK
/usr/share/accounts/providers/flickr.provider OK
/usr/share/accounts/qml-plugins/flickr/Main.qml OK
/usr/share/accounts/services/flickr-microblog.service OK
/usr/share/accounts/services/flickr-sharing.service OK
/usr/share/doc/account-plugin-flickr/copyright OK
/usr/share/accounts/providers/google.provider OK
/usr/share/accounts/qml-plugins/google/Main.qml OK
/usr/share/accounts/services/google-drive.service OK
/usr/share/accounts/services/google-im.service OK
/usr/share/accounts/services/picasa.service OK
/usr/share/doc/account-plugin-google/copyright OK
/lib/systemd/system/accounts-daemon.service OK
/usr/lib/accountsservice/accounts-daemon OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml OK
/usr/share/dbus-1/system-services/org.freedesktop.Accounts.service OK
/usr/share/doc/accountsservice/README OK
/usr/share/doc/accountsservice/TODO OK
....
要启用检查每个包的每个文件和配置文件是否有任何更改,请包含 -a
或 --all
选项:
sudo debsums --all
/usr/bin/a11y-profile-manager-indicator OK
/usr/share/doc/a11y-profile-manager-indicator/copyright OK
/usr/share/man/man1/a11y-profile-manager-indicator.1.gz OK
/etc/xdg/autostart/a11y-profile-manager-indicator-autostart.desktop OK
/usr/share/accounts/providers/facebook.provider OK
/usr/share/accounts/qml-plugins/facebook/Main.qml OK
/usr/share/accounts/services/facebook-microblog.service OK
/usr/share/accounts/services/facebook-sharing.service OK
/usr/share/doc/account-plugin-facebook/copyright OK
/etc/signon-ui/webkit-options.d/www.facebook.com.conf OK
/usr/share/accounts/providers/flickr.provider OK
/usr/share/accounts/qml-plugins/flickr/Main.qml OK
/usr/share/accounts/services/flickr-microblog.service OK
/usr/share/accounts/services/flickr-sharing.service OK
/usr/share/doc/account-plugin-flickr/copyright OK
/etc/signon-ui/webkit-options.d/login.yahoo.com.conf OK
/usr/share/accounts/providers/google.provider OK
/usr/share/accounts/qml-plugins/google/Main.qml OK
/usr/share/accounts/services/google-drive.service OK
/usr/share/accounts/services/google-im.service OK
/usr/share/accounts/services/picasa.service OK
/usr/share/doc/account-plugin-google/copyright OK
...
也可以使用 -e
或 --config
选项仅检查配置文件,排除所有其他包文件:
sudo debsums --config
/etc/xdg/autostart/a11y-profile-manager-indicator-autostart.desktop OK
/etc/signon-ui/webkit-options.d/www.facebook.com.conf OK
/etc/signon-ui/webkit-options.d/login.yahoo.com.conf OK
/etc/signon-ui/webkit-options.d/accounts.google.com.conf OK
/etc/dbus-1/system.d/org.freedesktop.Accounts.conf OK
/etc/acpi/asus-keyboard-backlight.sh OK
/etc/acpi/events/asus-keyboard-backlight-down OK
/etc/acpi/ibm-wireless.sh OK
/etc/acpi/events/tosh-wireless OK
/etc/acpi/asus-wireless.sh OK
/etc/acpi/events/lenovo-undock OK
/etc/default/acpi-support OK
/etc/acpi/events/ibm-wireless OK
/etc/acpi/events/asus-wireless-on OK
/etc/acpi/events/asus-wireless-off OK
/etc/acpi/tosh-wireless.sh OK
/etc/acpi/events/asus-keyboard-backlight-up OK
/etc/acpi/events/thinkpad-cmos OK
/etc/acpi/undock.sh OK
/etc/acpi/events/powerbtn OK
/etc/acpi/powerbtn.sh OK
/etc/init.d/acpid OK
/etc/init/acpid.conf OK
/etc/default/acpid OK
...
接下来,要仅在 debsums 的输出中显示更改的文件,请使用 -c
或 --changed
选项。我在系统中没有发现任何已更改的文件。
sudo debsums --changed
下一个命令打印出没有 md5sum 信息的文件,这里我们使用 -l
和 --list-missing
选项。在我的系统上,该命令不显示任何文件。
sudo debsums --list-missing
现在是时候通过指定名称来验证单个包的 md5 sum 了:
sudo debsums apache2
/lib/systemd/system/apache2.service.d/apache2-systemd.conf OK
/usr/sbin/a2enmod OK
/usr/sbin/a2query OK
/usr/sbin/apache2ctl OK
/usr/share/apache2/apache2-maintscript-helper OK
/usr/share/apache2/ask-for-passphrase OK
/usr/share/bash-completion/completions/a2enmod OK
/usr/share/doc/apache2/NEWS.Debian.gz OK
/usr/share/doc/apache2/PACKAGING.gz OK
/usr/share/doc/apache2/README.Debian.gz OK
/usr/share/doc/apache2/README.backtrace OK
/usr/share/doc/apache2/README.multiple-instances OK
/usr/share/doc/apache2/copyright OK
/usr/share/doc/apache2/examples/apache2.monit OK
/usr/share/doc/apache2/examples/secondary-init-script OK
/usr/share/doc/apache2/examples/setup-instance OK
/usr/share/lintian/overrides/apache2 OK
/usr/share/man/man1/a2query.1.gz OK
/usr/share/man/man8/a2enconf.8.gz OK
/usr/share/man/man8/a2enmod.8.gz OK
/usr/share/man/man8/a2ensite.8.gz OK
/usr/share/man/man8/apache2ctl.8.gz OK
假设您以没有 sudo 的普通用户身份运行 debsums,则可以通过使用 --ignore-permissions
选项将权限错误视为警告:
debsums --ignore-permissions
如何从 .Deb 文件生成 MD5 和
-g
选项告诉 debsums 从 deb 内容生成 MD5 和,其中:
- missing – 指示 debsums 从 deb 中为不提供 MD5 和的软件包生成 MD5 和。
- all – 指示 debsums 忽略磁盘上的总和并使用 deb 文件中存在的总和,或者如果不存在则从该文件生成。
- keep – 告诉 debsums 将提取/生成的总和写入 /var/lib/dpkg/info/package.md5sums 文件。
- nocheck – 表示不对照已安装的软件包检查提取/生成的总和。
当您查看目录 /var/lib/dpkg/info/
的内容时,您将看到打包的各种文件的 md5sum,如下图所示:
cd /var/lib/dpkg/info
$ ls *.md5sums
a11y-profile-manager-indicator.md5sums
account-plugin-facebook.md5sums
account-plugin-flickr.md5sums
account-plugin-google.md5sums
accountsservice.md5sums
acl.md5sums
acpid.md5sums
acpi-support.md5sums
activity-log-manager.md5sums
adduser.md5sums
adium-theme-ubuntu.md5sums
adwaita-icon-theme.md5sums
aisleriot.md5sums
alsa-base.md5sums
alsa-utils.md5sums
anacron.md5sums
apache2-bin.md5sums
apache2-data.md5sums
apache2.md5sums
apache2-utils.md5sums
apg.md5sums
apparmor.md5sums
app-install-data.md5sums
app-install-data-partner.md5sums
...
请记住,使用 -g
选项与 --generate=missing
相同,您可以尝试通过运行为 apache2 包生成 md5 和以下命令。
sudo debsums --generate=missing apache2
由于我系统上的 apache2 软件包已经有 md5 和,因此它将显示以下输出,与运行相同:
sudo debsums apache2
有关更多有趣的选项和使用信息,请查看 debsums 手册页。
man debsums
在本文中,我们分享了如何根据 MD5 校验和验证已安装的 Debian/Ubuntu 软件包,这对于避免在您的计算机上安装和执行损坏的二进制文件或软件包文件非常有用。系统通过根据包中存储的信息检查文件系统上的文件。
如有任何问题或反馈,请使用下面的评论表。可以想象,您也可以提供一两个建议来使这篇文章变得更好。