Wyszukiwanie w witrynie

Jak sprawdzić sumy MD5 zainstalowanych pakietów w systemie Debian/Ubuntu Linux


Czy zastanawiałeś się kiedyś dlaczego dany plik binarny lub pakiet zainstalowany w Twoim systemie nie działa zgodnie z Twoimi oczekiwaniami, czyli nie działa poprawnie tak jak powinien, być może w ogóle nie może się uruchomić.

Podczas pobierania pakietów możesz napotkać wyzwania związane z niestabilnymi połączeniami sieciowymi lub nieoczekiwanymi przerwami w dostawie prądu, co może skutkować instalacją uszkodzonego pakietu.

Biorąc to pod uwagę jako ważny czynnik w utrzymaniu nieuszkodzonych pakietów w systemie, istotnym krokiem jest zweryfikowanie plików w systemie plików z informacjami przechowywanymi w pakiecie, korzystając z poniższego artykułu.

Sugerowana lektura: Dowiedz się, jak generować i weryfikować pliki za pomocą sumy kontrolnej MD5 w systemie Linux

Jak zweryfikować zainstalowane pakiety Debiana pod kątem sum kontrolnych MD5

W systemach Debian/Ubuntu możesz użyć narzędzia debsums, aby sprawdzić sumę MD5 zainstalowanych pakietów. Jeśli chcesz poznać informacje o pakiecie debsums przed jego instalacją, możesz użyć APT-CACHE w następujący sposób:

apt-cache search debsums

Następnie zainstaluj go za pomocą polecenia apt w następujący sposób:

sudo apt install debsums

Teraz czas nauczyć się używać narzędzia debsums do weryfikacji sumy MD5 zainstalowanych pakietów.

Uwaga: użyłem sudo ze wszystkimi poniższymi poleceniami, ponieważ niektóre pliki mogą nie mieć uprawnień do odczytu dla zwykłych użytkowników.

Ponadto dane wyjściowe polecenia debsums pokazują lokalizację pliku po lewej stronie i wyniki sprawdzenia po prawej. Istnieją trzy możliwe wyniki, które można uzyskać, obejmują one:

  1. OK – wskazuje, że suma MD5 pliku jest dobra.
  2. FAILED – pokazuje, że suma MD5 pliku nie jest zgodna.
  3. REPLACED – oznacza, że konkretny plik został zastąpiony plikiem z innego pakietu.

Jeśli uruchomisz go bez żadnych opcji, debsums sprawdzi każdy plik w systemie pod kątem standardowych plików 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
....

Aby włączyć sprawdzanie każdego pliku i plików konfiguracyjnych dla każdego pakietu pod kątem jakichkolwiek zmian, dołącz opcję -a lub --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
...

Równie możliwe jest sprawdzenie tylko pliku konfiguracyjnego, z wyłączeniem wszystkich innych plików pakietu, używając opcji -e lub --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
...

Następnie, aby wyświetlić tylko zmienione pliki na wyjściu debsum, użyj opcji -c lub --changed. Nie znalazłem żadnych zmienionych plików w moim systemie.

sudo debsums --changed

Następne polecenie wypisuje pliki, które nie zawierają informacji o sumie md5, tutaj używamy opcji -l i --list-missing. W moim systemie polecenie nie wyświetla żadnego pliku.

sudo debsums --list-missing

Teraz czas sprawdzić sumę md5 pojedynczego pakietu poprzez podanie jego nazwy:

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

Zakładając, że używasz debsums jako zwykły użytkownik bez sudo, możesz potraktować błędy uprawnień jako ostrzeżenia, korzystając z opcji --ignore-permissions :

debsums --ignore-permissions 

Jak wygenerować sumy MD5 z plików .Deb

Opcja -g mówi debsumom, aby wygenerowały sumy MD5 z zawartości deb, gdzie:

  1. brak – instruuj debsumy, aby wygenerowały sumy MD5 z deb dla pakietów, które ich nie zapewniają.
  2. all – nakazuje debsumom ignorowanie sum znajdujących się na dysku i używanie sum znajdujących się w pliku deb lub wygenerowanych z niego, jeśli takie nie istnieją.
  3. keep – mówi debsumowi, aby zapisał wyodrębnione/wygenerowane sumy do pliku /var/lib/dpkg/info/package.md5sums.
  4. nocheck – oznacza, że wyodrębnione/wygenerowane sumy nie są sprawdzane względem zainstalowanego pakietu.

Kiedy spojrzysz na zawartość katalogu /var/lib/dpkg/info/, zobaczysz sumy md5 dla różnych plików spakowanych jak na obrazku poniżej:

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
...

Pamiętaj, że użycie opcji -g jest tym samym, co --generate=missing, możesz spróbować wygenerować sumę md5 dla pakietu Apache2, uruchamiając następujące polecenie.

sudo debsums --generate=missing apache2 

Ponieważ pakiet Apache2 w moim systemie ma już sumy md5, wyświetli wynik poniżej, który będzie taki sam jak przy uruchomieniu:

sudo debsums apache2

Więcej interesujących opcji i informacji o użytkowaniu znajdziesz na stronie podręcznika debsums.

man debsums

W tym artykule omówiliśmy, jak zweryfikować zainstalowane pakiety Debian/Ubuntu pod kątem sum kontrolnych MD5. Może to być przydatne, aby uniknąć instalowania i wykonywania uszkodzonych plików binarnych lub plików pakietów na komputerze systemu, sprawdzając pliki w systemie plików z informacjami przechowywanymi w pakiecie.

W przypadku jakichkolwiek pytań lub opinii skorzystaj z poniższego formularza komentarza. Można sobie wyobrazić, że równie dobrze możesz zaproponować jedną lub dwie sugestie, jak ulepszyć ten post.