2021-05-12 14:32:11
如何在Debian/Ubuntu Linux中校驗已安裝軟體包的MD5和?
你有沒有想過為什麼安裝在你系統上的某個二進位制檔案或軟體包沒有按預期的那樣來執行,或者說沒有按正常的方式來執行,也許它根本就無法啟動。
下載軟體包時,你可能面臨這些挑戰:網路連線不穩定或者突然斷電,這會導致安裝的軟體包受到損壞。
考慮到這是維護系統上未損壞軟體包的一個重要因素,因而對照儲存在軟體包中的資訊,驗證檔案系統上的檔案是個重要步驟,為此需要閱讀本文。
推薦閱讀:《學會如何在Linux下生成MD5校驗和並使用它來校驗檔案?》(http://www.tecmint.com/generate-verify-check-files-md5-checksum-linux/)
如何對照MD5校驗和校驗已安裝的Debian軟體包?
在Debian/Ubuntu系統上,你可以使用debsums工具來校驗已安裝軟體包的MD5和。如果你想在安裝之前知道關於debsums軟體包的資訊,可以使用APT-CACHE,就像這樣:
- $ apt-cache search debsums
下一步,使用apt命令來安裝它,如下所示:
- $ sudo apt install debsums
現在可以了解如何使用debsums工具,來校驗已安裝軟體包的MD5和了。
說明:我在下面的所有命令中使用了sudo,因為普通使用者可能沒有某些檔案的讀取許可權。
此外,來自debsums命令的輸出在左邊顯示了檔案位置,在右邊顯示了檢驗結果。你會得到三種可能的結果,它們包括:
- OK――表明某個檔案的MD5和是好的。
- FAILED――表明某個檔案的MD5和不匹配。
- REPLACED――意味著某個特定檔案已被來自另一個軟體包的檔案所更換。
如果你不用任何選項來執行,debsums會對照常規的md5sum檔案來校驗系統上的每個檔案。
- $ sudo debsums
掃描檔案系統、尋找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選項:
- $ sudo debsums --all
校驗所有組態檔的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
- /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
只校驗組態檔的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
- /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和:
- $ sudo debsums apache2
校驗已安裝軟體包的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選項,把許可權錯誤當成警告:
- $ 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
列出軟體包的所有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和,只要執行下面這個命令:
- $ sudo debsums --generate=missing apache2
由於我系統上的apache2軟體包已經有md5和,它會顯示下列輸出,這與執行$ sudo debsums apache2的結果一樣。
想了解更多有意思的選項和使用方面的資訊,請參閱debsums參考手冊頁。
- $ man debsums
在本文中,我們介紹了如何對照MD5校驗和校驗已安裝的Debian/Ubuntu軟體包,為了避免在你的系統上安裝和執行損壞的二進位制檔案或軟體包檔案,有必要對照軟體包中儲存的資訊來校驗檔案系統上的檔案。
若有任何問題或反饋,歡迎留言交流。
原文標題: How to Check MD5 Sums of Installed Packages in Debian/Ubuntu Linux,作者: Aaron Kili
相關文章