Bagaimana Anda memperbaiki pembaruan apt-get “Hash Sum mismatch”

23

Saya memiliki kotak virtual Ubuntu 12,04 vm yang saya instantiate menggunakan Vagrant.

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

Segera setelah kotak gelandangan berjalan apt-get update, saya mendapatkan kesalahan berikut.

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

Hal yang saya coba untuk mengatasi kesalahan ini.

  • Menggunakan 3 kotak ubuntu 12,04 berbeda dari ' http://www.vagrantbox.es '
  • solusi yang disarankan di sini :

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

  • Menghapus dan membaca paket lab boneka

Saya juga mencoba saran serupa yang saya temukan di beberapa halaman pertama google. Saya bahkan sudah mencoba banyak komputer, dan beberapa koneksi internet.

Fakta bahwa ini telah mempengaruhi banyak ubuntu vm pada beberapa koneksi internet membuat saya berpikir ada sesuatu yang salah dengan repo ubuntu.

Bagaimana lagi saya bisa mencoba untuk memperbaiki masalah ini?

Memperbarui

Saya mencoba membersihkan '/ var / lib / apt / daftar / parsial' dan menjalankan apt-get clean kemudian mengganti sumber di / etc / sources / list dengan menggunakan mirror amazon yang disarankan di sini:

Saya masih mendapatkan kesalahan serupa

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.

Pembaruan2

Saya memiliki 2 koneksi internet di rumah, keduanya memberikan kesalahan yang sama. Segera setelah saya membawa laptop saya ke koneksi internet kantor saya, masalahnya hilang.

Saya masih penasaran untuk memahami mengapa koneksi internet saya akan membuat perbedaan.

Pembaruan3

Lihat jawaban saya di bawah untuk penjelasan. Filter internet saya merusak pengunduhan.

Saya akan ulangi pertanyaannya karena belum ada jawaban.

Apakah ada cara untuk mengganti ketidakcocokan Hash Sum di apt-get?

spuder
sumber
sudahkah Anda membersihkan cache seperti yang disarankan di sini ?
Kiwy
Juga apakah distro Anda menyertakan apt-cacher NG? karena tampaknya tidak dapat diandalkan
Kiwy
Saya menemukan blog itu, dan saya memverifikasi bahwa apt-cache-ng tidak diinstal. Masalahnya hilang ketika saya mencoba hypervisor berbeda pada koneksi internet yang berbeda.
Spuder
mungkin implementasi rusak dari satu hash khusus pada hypervisor, tapi itu masih sangat aneh.
Kiwy
Solusi Anda juga berhasil untuk saya. Saya menjalankan melalui server TinyProxy yang dihosting di AWS dan memiliki beberapa pengaturan filter iklan. Setelah saya menyingkirkan proxy di apt.conf, semuanya berfungsi dengan baik.

Jawaban:

20

Pertama, Anda harus memahami mengapa kesalahan jumlah ketidakcocokan hash terjadi. Secara umum, ada 2 alasan:

Pertama, Beberapa repositori apt menggunakan LZMA (.xz) metadata terkompresi. apt sebelum versi 1.0 gagal untuk mendekompresi arsip LZMA dengan benar (kadang-kadang) memberikan kesalahan jumlah ketidakcocokan hash.

Ada dua pekerjaan untuk ini:

  1. Beri tahu klien Anda yang tepat untuk tidak menggunakan metadata terkompresi XZ
  2. Tingkatkan apt pada sistem Anda ke versi yang lebih baru dari 1.0

Lihat posting blog ini yang saya tulis tentang masalah ini yang menjelaskan keduanya bekerja secara lebih rinci.

Kedua, repositori APT secara inheren bersemangat . Metadata APT yang sebenarnya adalah buggy dan desainnya membuat tidak mungkin bagi klien yang tepat untuk mengunduh metadata repositori dengan cara yang konsisten jika apt-get updateterjadi ketika repositori sedang diperbarui.

Ada dua pekerjaan untuk ini:

  1. Tingkatkan ke versi APT yang lebih baru dan pastikan bahwa repositori yang Anda buat (atau ingin Anda gunakan) mendukung fitur Acquire-by-hash . Ini memperbaiki masalah pada intinya, tetapi tidak mungkin dalam beberapa kasus jika Anda tidak mengontrol repositori.
  2. Anda dapat menghapus metadata yang di-cache di sistem Anda dan coba lagi. Untuk melakukan ini, jalankan pertama apt-get cleandiikuti oleh rm -rf /var/lib/apt/lists/*. Selanjutnya, jalankan apt-get update. Ini akan mengunduh ulang semua metadata. Jika repositori yang Anda coba sambungkan tidak memperbarui dirinya sendiri saat Anda menjalankan apt-get update, Anda akan baik-baik saja. Kalau tidak, Anda harus melakukan ini lagi.
Joe Damato
sumber
Ini adalah satu-satunya solusi yang berhasil untuk saya! Terima kasih untuk posting blog
Amir Uval
Anda berkomentar bahwa lebih baik menjadi versi terbaru. Bisakah Anda memberi tahu saya cara memperbaruinya?
Amir Uval
Bagaimana tepatnya Anda menggunakan fitur Acquire-by-hash? Saya telah melihat blog tentang itu tetapi mereka tidak mengatakan file mana yang harus dimasukkan dan mereka tidak menunjukkan contoh.
LINUX G33NYUS
6

Menemukannya.

Dua komputer saya identik dalam segala hal kecuali pada komputer pribadi saya, saya memasang filter internet.

Filter internet k9 memasang ekstensi kernel yang tampaknya mengacaukan lalu lintas.

Segera setelah saya menghapus filter, masalahnya hilang.

Saya masih meneliti apakah ada cara untuk membuat apt-get updatemengabaikan ketidakcocokan jumlah Hash sebagai solusi.

spuder
sumber
Ini sebenarnya masuk akal, karena saya baru-baru ini mulai mengalami masalah ini setelah menginstal k9; tapi saya tidak membuat koneksi saat itu. Solusi akan lebih baik, karena saya jelas lebih suka untuk tidak menonaktifkan filter (setelah semua, itu ada karena suatu alasan).
MuffinTheMan
Ya tapi bagaimana saya bisa melakukan itu (menghapus filter), karena saya memiliki masalah yang sama dengan Anda, tetapi bagaimanapun saya masih terjebak di
Unduh versi terbaru k9 dari situs web mereka. Akan ada uninstaller di dalam paket instalasi.
Spuder