Kako preveriti vsote MD5 nameščenih paketov v Debian/Ubuntu Linux


Ste se kdaj vprašali, zakaj dani binarni paket ali paket, nameščen v vašem sistemu, ne deluje v skladu z vašimi pričakovanji, kar pomeni, da ne deluje pravilno, kot bi moral, morda sploh ne more začeti dogodka.

Med prenosom paketov se lahko soočate z izzivi nestabilnih omrežnih povezav ali nepričakovanih izpadov električne energije, kar lahko povzroči namestitev poškodovanega paketa.

Če upoštevamo to kot pomemben dejavnik pri vzdrževanju nepoškodovanih paketov v vašem sistemu, je zato nujno treba preveriti datoteke v datotečnem sistemu glede na podatke, shranjene v paketu, z uporabo naslednjega članka.

Kako preveriti nameščene pakete Debian glede na kontrolne vsote MD5

V sistemih Debian/Ubuntu lahko z orodjem debsums preverite vsote MD5 nameščenih paketov. Če želite pred namestitvijo vedeti informacije o paketu debsums, lahko uporabite APT-CACHE takole:

$ apt-cache search debsums

Nato ga namestite z ukazom apt, kot sledi:

$ sudo apt install debsums

Zdaj je čas, da se naučite, kako z orodjem debsums preveriti MD5sum nameščenih paketov.

Opomba: Uporabil sem sudo z vsemi spodnjimi ukazi, ker nekatere datoteke morda nimajo dovoljenj za branje za običajne uporabnike.

Poleg tega izhod iz ukaza debsums prikaže lokacijo datoteke na levi in rezultate preverjanja na desni. Obstajajo trije možni rezultati, ki vključujejo:

  1. V redu - pomeni, da je vsota datoteke MD5 dobra.
  2. FAILED - kaže, da se vsota datoteke MD5 ne ujema.
  3. REPLACED - pomeni, da je določeno datoteko nadomestila datoteka iz drugega paketa.

Ko ga zaženete brez kakršnih koli možnosti, debsums preveri vsako datoteko v sistemu glede na zaloge 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
....

Če želite omogočiti preverjanje sprememb v vsaki datoteki in konfiguracijskih datotekah za vsak paket, vključite možnost -a ali --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
...

Prav tako je mogoče z uporabo možnosti -e ali --config preveriti samo konfiguracijsko datoteko, razen vseh drugih paketnih datotek:

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

Nato uporabite samo možnost -c ali --changed , če želite v izhodni obliki debsumov prikazati samo spremenjene datoteke. V svojem sistemu nisem našel nobene spremenjene datoteke.

$ sudo debsums --changed

Naslednji ukaz natisne datoteke, ki nimajo informacij o md5sum, tu uporabimo možnosti -l in --list-missing . V mojem sistemu ukaz ne prikaže nobene datoteke.

$ sudo debsums --list-missing

Zdaj je čas, da preverite vsoto md5 posameznega paketa tako, da navedete njegovo ime:

$ 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

Ob predpostavki, da debsume izvajate kot običajni uporabnik brez sudo, lahko napake v dovoljenjih obravnavate kot opozorila z uporabo možnosti --ignore-permissions :

$ debsums --ignore-permissions 

Kako ustvariti vsote MD5 iz datotek .Deb

Možnost -g sporoča debsumom, naj generirajo vsote MD5 iz deb vsebine, kjer:

  1. manjka - naročite debsumom, naj generirajo vsote MD5 iz deb za pakete, ki tega ne zagotavljajo.
  2. vse - usmerja debsume, da prezrejo vsote na disku in uporabijo tisto, ki je prisotna v datoteki deb ali ustvarjeno iz nje, če ta ne obstaja.
  3. obdrži - pove debsumom, naj ekstrahirane/ustvarjene vsote zapišejo v datoteko /var/lib/dpkg/info/package.md5sums.
  4. nocheck - pomeni, da izvlečene/ustvarjene vsote niso preverjene glede na nameščeni paket.

Ko pogledate vsebino imenika /var/lib/dpkg/info/, boste videli md5sums za različne datoteke, ki se pakirajo, kot na spodnji sliki:

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

Ne pozabite, da je uporaba -g enaka kot --generate = manjka , lahko poskusite ustvariti vsoto md5 za paket apache2, tako da zaženete naslednji ukaz.

$ sudo debsums --generate=missing apache2 

Ker paket apache2 v mojem sistemu že ima vsote md5, bo spodaj prikazal izhod, kar je enako kot zagon:

$ sudo debsums apache2

Za bolj zanimive možnosti in informacije o uporabi si oglejte stran z informacijami o debsumih.

$ man debsums

V tem članku smo delili, kako preveriti nameščene pakete Debian/Ubuntu glede na kontrolne vsote MD5, kar je lahko koristno, če se želite izogniti namestitvi in izvrševanju poškodovanih binarnih datotek ali datotek paketov v vašem sistemu s preverjanjem datotek v datotečnem sistemu glede na podatke, shranjene v paket.

Za kakršna koli vprašanja ali povratne informacije izkoristite spodnji obrazec za komentar. Predstavljate si lahko tudi enega ali dva predloga za izboljšanje te objave.