Bạn đã bao giờ tự hỏi tại sao một tệp nhị phân hoặc gói cài đặt trên hệ thống của bạn không hoạt động theo các mong đợi của bạn, có nghĩa là nó không hoạt động đúng như dự định, có thể thậm chí không thể khởi động.
Trong quá trình tải xuống các gói, bạn có thể gặp khó khăn với mạng không ổn định hoặc mất điện đột ngột, điều này có thể dẫn đến việc cài đặt gói bị hỏng.
Xem xét điều này như là yếu tố quan trọng trong việc duy trì các gói không bị hỏng trên hệ thống của bạn, việc xác minh các tệp trên hệ thống tệp tin với thông tin được lưu trữ trong gói bằng cách sử dụng bài viết sau đây là bước quan trọng.
Cách Xác minh Các Gói Debian Đã Cài Đặt Bằng Checksum MD5
Trên các hệ thống Debian/Ubuntu, bạn có thể sử dụng công cụ debsums để kiểm tra checksum MD5 của các gói đã cài đặt. Nếu bạn muốn biết thông tin về gói debsums trước khi cài đặt nó, bạn có thể sử dụng APT-CACHE như sau:
$ apt-cache search debsums
Tiếp theo, cài đặt nó bằng lệnh apt như sau:
$ sudo apt install debsums
Bây giờ là lúc để tìm hiểu cách sử dụng công cụ debsums để xác minh checksum MD5 của các gói đã cài đặt.
Lưu ý: Tôi đã sử dụng sudo với tất cả các lệnh dưới đây vì một số tệp có thể không có quyền đọc cho người dùng thông thường.
Ngoài ra, đầu ra từ lệnh debsums hiển thị vị trí tệp tin ở vị trí bên trái và kết quả kiểm tra ở vị trí bên phải. Có ba kết quả có thể bạn nhận được, bao gồm:
- OK – chỉ ra rằng checksum MD5 của một tệp tin là tốt.
- FAILED – chỉ ra rằng checksum MD5 của một tệp tin không khớp.
- REPLACED – chỉ ra rằng tệp tin cụ thể đã được thay thế bằng tệp tin từ một gói khác.
Khi chạy nó mà không có bất kỳ tùy chọn nào, debsums kiểm tra tất cả các tệp trên hệ thống của bạn so với các tệp md5sum của gốc.
$ sudo debsums
Quét Hệ Thống Tệp Tin Đối Với checksum 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
....
Để bật kiểm tra của tất cả các tệp tin và tệp tin cấu hình cho từng gói để tìm bất kỳ thay đổi nào, sử dụng tùy chọn -a
hoặc --all
:
$ sudo debsums --all
Kiểm Tra checksum MD5 Của Tất Cả Các Tệp Tin Cấu Hình
/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
...
Cũng có thể kiểm tra chỉ tệp tin cấu hình mà không bao gồm tất cả các tệp khác của gói bằng cách sử dụng tùy chọn -e
hoặc --config
:
$ sudo debsums --config
Chỉ Kiểm Tra checksum MD5 Của Tệp Tin Cấu Hình
/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
...
Tiếp theo, để chỉ hiển thị các tệp đã thay đổi trong đầu ra của debsums, sử dụng tùy chọn -c
hoặc --changed
. Tôi không tìm thấy bất kỳ tệp nào đã thay đổi trong hệ thống của mình.
$ sudo debsums --changed
Lệnh tiếp theo in ra các tệp không có thông tin md5sum, ở đây chúng tôi sử dụng các tùy chọn -l
và --list-missing
. Trên hệ thống của tôi, lệnh này không hiển thị bất kỳ tệp nào.
$ sudo debsums --list-missing
Bây giờ là lúc xác minh md5 sum của một gói duy nhất bằng cách chỉ định tên gói:
$ sudo debsums apache2
Kiểm Tra checksum MD5 Của Gói Đã Cài Đặt
/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
Giả sử rằng bạn đang chạy debsums như là một người dùng thông thường mà không sử dụng sudo, bạn có thể xem lỗi quyền hạn như là cảnh báo bằng cách sử dụng tùy chọn --ignore-permissions
:
$ debsums --ignore-permissions
Cách Tạo checksum MD5 Từ Tệp .Deb
Tùy chọn -g
cho biết cho debsums tạo checksum MD5 từ nội dung deb, trong đó:
- missing – chỉ dẫn debsums tạo checksum MD5 từ deb cho các gói không cung cấp checksum.
- all – yêu cầu debsums bỏ qua checksum trên đĩa và sử dụng checksum trong tệp deb, hoặc tạo checksum nếu không tồn tại.
- keep – yêu cầu debsums ghi checksum trích xuất/tạo ra vào tệp /var/lib/dpkg/info/package.md5sums.
- nocheck – có nghĩa là checksum trích xuất/tạo ra không được kiểm tra so với gói đã cài đặt.
Khi xem nội dung của thư mục /var/lib/dpkg/info/
, bạn sẽ thấy md5sums cho các tệp tin khác nhau trong các gói như hình ảnh bên dưới:
$ cd /var/lib/dpkg/info
$ ls *.md5sums
Liệt Kê Tất Cả checksum MD5 Cho Các Gói
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
...
Hãy nhớ rằng sử dụng tùy chọn -g
tương tự --generate=missing
, bạn có thể thử tạo checksum MD5 cho gói apache2 bằng cách chạy lệnh sau đây.
$ sudo debsums --generate=missing apache2
Vì gói apache2 trên hệ thống của tôi đã có checksum md5, nó sẽ hiển thị đầu ra dưới đây, tương tự như chạy lệnh:
$ sudo debsums apache2
Để biết thêm các tùy chọn thú vị và thông tin sử dụng, hãy xem qua trang man của debsums.
$ man debsums
Trong bài viết này, chúng tôi chia sẻ cách xác minh các gói Debian/Ubuntu đã cài đặt bằng checksum MD5, điều này có thể hữu ích để tránh cài đặt và thực thi các tệp nhị phân hoặc gói bị hỏng trên hệ thống của bạn bằng cách kiểm tra các tệp trên hệ thống tệp tin với thông tin được lưu trữ trong gói.
Đối với bất kỳ câu hỏi hoặc phản hồi nào, hãy sử dụng mẫu bình luận phía dưới. Có thể bạn cũng có thể đưa ra một hoặc hai đề xuất để cải thiện bài viết này.