Поиск по сайту:

Как проверить суммы MD5 установленных пакетов в Debian/Ubuntu Linux


Вы когда-нибудь задумывались, почему определенный двоичный файл или пакет, установленный в вашей системе, не работает в соответствии с вашими ожиданиями, то есть он не работает правильно, как должен, возможно, он вообще не может запуститься.

При загрузке пакетов вы можете столкнуться с проблемами нестабильного сетевого подключения или неожиданными отключениями электроэнергии, что может привести к установке поврежденного пакета.

Учитывая это как важный фактор в сохранении неповрежденных пакетов в вашей системе, поэтому крайне важно проверить файлы в файловой системе на соответствие информации, хранящейся в пакете, с помощью следующей статьи.

Рекомендуется к прочтению: Узнайте, как создавать и проверять файлы с помощью контрольной суммы MD5 в Linux.

Как проверить установленные пакеты Debian по контрольным суммам MD5

В системах Debian/Ubuntu вы можете использовать инструмент debsums для проверки сумм MD5 установленных пакетов. Если вы хотите узнать информацию о пакете debsums перед его установкой, вы можете использовать APT-CACHE следующим образом:

apt-cache search debsums

Затем установите его с помощью команды apt следующим образом:

sudo apt install debsums

Теперь пришло время узнать, как использовать инструмент debsums для проверки MD5sum установленных пакетов.

Примечание. Я использовал sudo со всеми приведенными ниже командами, поскольку некоторые файлы могут не иметь разрешений на чтение для обычных пользователей.

Кроме того, выходные данные команды debsums показывают расположение файла слева и результаты проверки справа. Есть три возможных результата, которые вы можете получить, они включают в себя:

  1. OK — указывает, что сумма MD5 файла правильная.
  2. FAILED – показывает, что сумма MD5 файла не совпадает.
  3. REPLACED – означает, что конкретный файл был заменен файлом из другого пакета.

Когда вы запускаете его без каких-либо параметров, debsums проверяет каждый файл в вашей системе на соответствие стандартным файлам 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
....

Чтобы включить проверку каждого файла и файлов конфигурации для каждого пакета на наличие изменений, включите опцию -a или --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
...

Также можно проверить только файл конфигурации, исключая все остальные файлы пакета, используя опцию -e или --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
...

Далее, чтобы в выводе debsums отображались только измененные файлы, используйте опцию -c или --changed. Я не нашел никаких измененных файлов в своей системе.

sudo debsums --changed

Следующая команда распечатывает файлы, которые не содержат информации md5sum, здесь мы используем опции -l и --list-missing. В моей системе команда не показывает ни одного файла.

sudo debsums --list-missing

Теперь пришло время проверить сумму md5 одного пакета, указав его имя:

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

Предполагая, что вы используете debsums как обычный пользователь без sudo, вы можете рассматривать ошибки разрешений как предупреждения, используя параметр --ignore-permissions :

debsums --ignore-permissions 

Как генерировать суммы MD5 из файлов .Deb

Опция -g указывает debsums генерировать суммы MD5 из содержимого deb, где:

  1. отсутствует — указать debsums генерировать суммы MD5 из deb для пакетов, которые их не предоставляют.
  2. all — предписывает debsums игнорировать суммы на диске и использовать ту, которая присутствует в файле deb или сгенерирована из него, если таковой не существует.
  3. keep — сообщает debsums записывать извлеченные/сгенерированные суммы в файл /var/lib/dpkg/info/package.md5sums.
  4. nocheck — означает, что извлеченные/сгенерированные суммы не проверяются по установленному пакету.

Когда вы посмотрите на содержимое каталога /var/lib/dpkg/info/, вы увидите md5sums для различных файлов, которые упаковываются, как показано на изображении ниже:

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

Помните, что использование опции -g аналогично --generate=missing, вы можете попытаться сгенерировать сумму md5 для пакета apache2, запустив следующую команду.

sudo debsums --generate=missing apache2 

Поскольку пакет apache2 в моей системе уже содержит суммы md5, он покажет вывод ниже, который аналогичен запуску:

sudo debsums apache2

Более интересные возможности и информацию об использовании можно найти на странице руководства debsums.

man debsums

В этой статье мы рассказали, как проверить установленные пакеты Debian/Ubuntu по контрольным суммам MD5. Это может быть полезно, чтобы избежать установки и выполнения поврежденных двоичных файлов или файлов пакетов на вашем компьютере. системы путем проверки файлов в файловой системе на соответствие информации, хранящейся в пакете.

По любым вопросам или отзывам воспользуйтесь формой комментариев ниже. Возможно, вы также можете предложить одно или два предложения, чтобы сделать этот пост лучше.