你有沒有想過為什麼安裝在你系統上的某個二進制檔案或軟體包沒有按預期的那樣來運作,或者說沒有按正常的方式來運作,也許它根本就無法啟動。
考慮到這是維護系統上未損壞軟體包的一個重要因素,因而對照存儲在軟體包中的資訊,驗證檔案系統上的檔案是個重要步驟,為此需要閱讀本文。
如何對照MD5校驗和校驗已安裝的Debian軟體包?
在Debian/Ubuntu系統上,你可以使用debsums工具來校驗已安裝軟體包的MD5和。如果你想在安裝之前知道關于debsums軟體包的資訊,可以使用APT-CACHE,就像這樣:
下一步,使用apt指令來安裝它,如下所示:
現在可以了解如何使用debsums工具,來校驗已安裝軟體包的MD5和了。
說明:我在下面的所有指令中使用了sudo,因為普通使用者可能沒有某些檔案的讀取權限。
此外,來自debsums指令的輸出在左邊顯示了檔案位置,在右邊顯示了檢驗結果。你會得到三種可能的結果,它們包括:
OK――表明某個檔案的MD5和是好的。
FAILED――表明某個檔案的MD5和不比對。
REPLACED――意味着某個特定檔案已被來自另一個軟體包的檔案所更換。
如果你不用任何選項來運作,debsums會對照正常的md5sum檔案來校驗系統上的每個檔案。
掃描檔案系統、尋找MD5和
/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選項:
校驗所有配置檔案的MD5和:
/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
…
還有可能隻校驗配置檔案,不包括軟體包的其他所有檔案,為此隻要使用-e或–config選項:
隻校驗配置檔案的MD5和:
/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選項。我在自己的系統中沒有找到任何變化的檔案。
下一個指令輸出沒有md5sum資訊的檔案,這裡我們使用-l和–list-missing選項。在我的系統上,該指令沒有顯示任何檔案。
現在隻要指定名稱,就可以校驗單一軟體包的md5和:
校驗已安裝軟體包的MD5和:
/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
假設你以普通使用者的身份運作debsums,沒有sudo權限,那麼可以使用–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,如下圖所示:
列出軟體包的所有MD5和:
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和,隻要運作下面這個指令:
由于我系統上的apache2軟體包已經有md5和,它會顯示下列輸出,這與運作$ sudo debsums apache2的結果一樣。
想了解更多有意思的選項和使用方面的資訊,請參閱debsums參考手冊頁。
原文釋出時間:2016-12-28