web-dev-qa-db-ja.com

apt-get update "Hash Sum Mismatch"をどのように修正しますか

私はVagrantを使用してインスタンス化するUbuntu 12.04仮想ボックスvmを持っています。

git clone https://github.com/spuder/puppet-gitlab
vagrant up

放浪者ボックスが実行されるとすぐにapt-get update、次のエラーが発生します。

...
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_main_binary-AMD64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_main_binary-i386_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_dependencies_binary-i386_Packages  Hash Sum mismatch
W: Failed to fetch http://br.archive.ubuntu.com/ubuntu/dists/precise-updates/restricted/binary-i386/Packages  404  Not Found

私がこのエラーを回避しようとしたこと。

  • ' http://www.vagrantbox.es 'から3つの異なるUbuntu 12.04ボックスを使用
  • 提案される解決策 ここ

    Sudo rm -rf/var/lib/apt/lists/*
    sudo apt-get update
    Sudo apt-get clean

  • Puppet labsパッケージを削除して再追加しました

また、Googleの最初の数ページで見つけた同様の提案も試しました。私は複数のコンピュータと複数のインターネット接続も試しました。

これが複数のインターネット接続上の複数のubuntu vmに影響を与えたという事実は、ubuntuリポジトリに何か問題があると思います。

他にどのようにしてこの問題を修正することができますか?

更新

'/ var/lib/apt/lists/partial'をクリーンアップしてapt-get cleanを実行してから、Amazonミラーを使用して/ etc/sources/listのソースを置き換えました ここに推奨:

私はまだ同じようなエラーが出ます

Fetched 18.9 MB in 10s (1,865 kB/s)                                                                                                                                                                            
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_main_binary-AMD64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-AMD64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_multiverse_binary-AMD64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_main_binary-i386_Packages  Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.

Update2

私は自宅に2つのインターネット接続を持っていますが、どちらも同じエラーを出しました。ラップトップを職場のインターネット接続に持って行くとすぐに、問題はなくなりました。

私のインターネット接続がなぜ変化をもたらすのか、私はまだ知りたいと思っています。

Update3

説明については、以下の私の回答を参照してください。インターネットフィルターがダウンロードを破損していました。

まだ回答がないので、質問を言い換えます。

apt-getでハッシュ合計の不一致をオーバーライドする方法はありますか?

24
spuder

理解した。

私の2台のコンピューターは、インターネットフィルターをインストールしたパーソナルコンピューター以外はすべて同じです。

K9インターネットフィルターは、明らかにトラフィックを乱すカーネル拡張機能をインストールしました。

フィルターをアンインストールするとすぐに、問題はなくなりました。

回避策としてハッシュサムの不一致をapt-get updateに無視させる方法があるかどうか、私はまだ調査中です。

6
spuder

まず、ハッシュ合計の不一致エラーが発生する理由を理解する必要があります。一般に、2つの理由があります。

まず、一部のaptリポジトリはLZMA(.xz)圧縮メタデータを使用します。バージョン1.0より前のaptは、LZMAアーカイブを正しく解凍できない場合があり、ハッシュサムの不一致エラーが発生することがあります。

これには2つの回避策があります。

  1. XZ圧縮メタデータを使用しないようにaptクライアントに指示します
  2. システムのaptをアップグレード 1.0より新しいバージョンに

これをチェックしてください ブログ投稿 この問題について、両方の回避策を詳細に説明しました。

第二に、 APTリポジトリは本質的に際どい です。実際のAPTメタデータはバグが多く、その設計により、リポジトリの更新中にapt-get updateが発生した場合、aptクライアントが一貫した方法でリポジトリメタデータをダウンロードできなくなります。

これには2つの回避策があります。

  1. APTの新しいバージョン にアップグレードし、作成する(または使用する)リポジトリが Acquire-by-hash 機能をサポートしていることを確認します。これにより、コアで問題が修正されますが、リポジトリを制御していない場合は、これができない場合があります。
  2. システム上のキャッシュされたメタデータを削除して、再試行できます。これを行うには、最初にapt-get cleanを実行し、次にrm -rf /var/lib/apt/lists/*を実行します。次に、apt-get updateを実行します。これにより、すべてのメタデータが再ダウンロードされます。接続しようとしているリポジトリがapt-get updateの実行中に更新されない場合は、問題ありません。それ以外の場合は、これをもう一度行う必要があります。
22
Joe Damato