kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

ハッシュサムが適合しないエラー

  「ソフトウェアの更新」や「Synaptic」を起動してアップデートの確認を行う時や、「apt-get update」を実行してパッケージインデックスファイルを更新する際、ハッシュサムが適合しないエラーが発生することがあります。

  例えば「Synaptic」なら、以下のようにパッケージ情報をダウンロードするタイミングでこのエラーが発生する可能性があります。


  「apt-get update」なら以下のようにパッケージインデックスファイルを更新中にエラーが発生する可能性があります。


  上記いずれの場面でも表現方法が異なるだけで、「パッケージインデックスファイルを更新」する処理を行っており、この処理中にエラーが発生する可能性があります。

  厄介なエラー

    これはキャッシュに不整合が起きている場合や、リポジトリーが配置されているサーバーの状態によって発生するエラーです。

    厄介なことにこの問題は、「運」で起きたり起きなかったりすることです。
    サーバーとユーザーの環境が正常に動作していても、再現性なくこのエラーが発生するケースがあります。

  ユーザーができること

    このエラーが発生した際ユーザーにできることは、しばらく時間をおいて再度パッケージインデックスファイルを更新するか、リポジトリーを参照するサーバーを変更することです。

    しかしどの程度時間をおいてパッケージインデックスファイルを更新すればエラーが解消されるのか確実なことは言えません。
    一言で言えば「運」です。

    また、リポジトリーを参照するサーバーを変更すればエラーが解消されるのかどうかも確実なことは言えません。
    これも一言で言えば「運」です。


    結構厄介なエラーですね。

  原因

    直接的な原因は、ダウンロードしたリポジトリーの情報とチェックサムが一致しないことです。
    しかし、この問題を発生させる要因は複数あり、キャッシュの不整合やサーバーの状態がこの問題を発生させる要因となります。

    例えばリポジトリーをミラーリングしているサーバーを参照してパッケージインデックスファイルを更新する場合、そのサーバーがリポジトリーをミラーリングしている最中かも知れません。
    ミラーリングしている最中にユーザーがパッケージインデックスファイルを更新すると、リポジトリーの情報とチェックサムに不整合が発生します。

    この問題を解決するには、リポジトリーやAPTの仕組みを変える必要があります。

  ファイル名による参照からハッシュ値による参照へ

    「Ubuntu 16.04」では、このエラーを根本的に解決するため、リポジトリーの情報が記述されたファイルを参照する際、従来のファイル名による参照からハッシュ値による参照に変更されます。

    「Ubuntu 16.04」ではこの変更にデフォルトで対応しており、「Ubuntu 16.04」ではハッシュサムが適合しないエラーは起きなくなります。
    ユーザーは特に何もしなくて良いです。

    ただしこの仕組みを利用するには、Ubuntu側とリポジトリー側の双方がこの仕組みに対応している必要があります。
    Ubuntuの公式リポジトリーは、この仕組みに対応しています。

    現状いくつかのPPAを見てみたところ、対応しているPPAと対応していないPPAが混在していました。

    また同様にいくつかの外部リポジトリーを見てみたところ、まだこの仕組みに対応しておらず、他のディストリビューションへの影響を考えるとリポジトリーの管理者がこの仕組みに対応してくれるかどうかは不明です。

参考



関連記事一覧
オプション