Debian/Ubuntu LinuxでインストールされたパッケージのMD5サムを確認する方法
あなたのシステムにインストールされた特定のバイナリやパッケージが、期待通りに動作しない理由を考えたことはありますか?つまり、それは本来の機能を正しく果たさず、場合によっては全く起動しないこともあります。
パッケージをダウンロードしている間、ネットワーク接続が不安定だったり、予期しない停電が発生したりすることがあり、これにより破損したパッケージがインストールされる可能性があります。
これはシステム上のパッケージを無傷に保つための重要な要素として考慮されるため、ファイルシステム上のファイルをパッケージに保存されている情報と照合することは、以下の記事を使用して確認することが重要なステップです。
おすすめの読み物: LinuxでMD5チェックサムを使ってファイルを生成および確認する方法を学ぼう
インストールされたDebianパッケージをMD5チェックサムと照合する方法
Debian/Ubuntu システムでは、debsums ツールを使用してインストールされたパッケージのMD5 ハッシュをチェックすることができます。インストール前にdebsums パッケージの情報を知りたい場合は、以下のように APT-CACHE を使用することができます:
$ apt-cache search debsums
次に、以下のようにaptコマンドを使ってインストールします:
$ sudo apt install debsums
さあ、インストールされたパッケージのMD5sumを確認するためにdebsumsツールの使い方を学ぶ時が来ました。
注意: 以下のすべてのコマンドでsudoを使用しています。これは、特定のファイルが通常のユーザーに対して読み取り権限を持っていない場合があるためです。
さらに、debsumsコマンドの出力は、左側にファイルの場所、右側にチェック結果を表示します。得られる結果は3つあり、以下のものが含まれます:
- OK – はファイルのMD5ハッシュが正常であることを示します。
- 失敗しました – ファイルのMD5ハッシュが一致しないことを示しています。
- 置き換えられた – 特定のファイルが別のパッケージからのファイルに置き換えられたことを意味します。
オプションなしで実行すると、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
.debファイルからMD5サムを生成する方法
-gオプションは、debsumsにdebコンテンツからMD5サムを生成するように指示します。
- 欠落している - debsumsに、MD5チェックサムを生成させるように指示して、チェックサムを提供していないdebパッケージのために。
- すべて – debsumsに対して、ディスク上のサムを無視し、debファイルに存在するサムを使用するか、存在しない場合はそれから生成されたサムを使用するよう指示します。
- keep – debsumsに抽出または生成されたサムを/var/lib/dpkg/info/package.md5sumsファイルに書き込むよう指示します。
- 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と同じであることを忘れないでください。apache2パッケージのmd5サムを生成するには、次のコマンドを実行してみてください。
$ sudo debsums --generate=missing apache2
私のシステムのapache2パッケージにはすでにmd5の合計があるため、以下の出力が表示されます。これは、次のコマンドを実行したときと同じです:
$ sudo debsums apache2
より興味深いオプションや使用情報については、debsumsのマニュアルページを参照してください。
$ man debsums
この記事では、インストールされたDebian/UbuntuパッケージをMD5チェックサムで検証する方法を共有しました。これは、ファイルシステム上のファイルをパッケージに保存されている情報と照らし合わせることで、システムに壊れたバイナリやパッケージファイルをインストールしたり実行したりするのを避けるために便利です。
ご質問やフィードバックがある場合は、下のコメントフォームをご利用ください。想像通り、この投稿をより良くするための一つか二つの提案もしていただけます。