Kiểm tra MD5 Sums các gói đã cài đặt trong Debian/Ubuntu

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:

  1. OK – chỉ ra rằng checksum MD5 của một tệp tin là tốt.
  2. FAILED – chỉ ra rằng checksum MD5 của một tệp tin không khớp.
  3. 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 đó:

  1. missing – chỉ dẫn debsums tạo checksum MD5 từ deb cho các gói không cung cấp checksum.
  2. 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.
  3. 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.
  4. 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.