คุณจะแก้ไข apt-get update ได้อย่างไร“ Hash Sum ไม่ตรงกัน”


23

ฉันมีกล่องเสมือน vm Ubuntu 12.04 ที่ฉันสร้างอินสแตนซ์โดยใช้ Vagrant

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

สิ่งที่ฉันพยายามแก้ไขข้อผิดพลาดนี้

  • ใช้ ubuntu 12.04 กล่องที่แตกต่างกัน 3 อันจาก ' http://www.vagrantbox.es '
  • ทางออกที่แนะนำที่นี่ :

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

  • ลบและอ่านแพ็กเกจแล็บหุ่นกระบอก

ฉันได้ลองคำแนะนำที่คล้ายกันซึ่งฉันพบในหน้าแรก ๆ ของ google ฉันเคยลองใช้คอมพิวเตอร์หลายเครื่องและเชื่อมต่ออินเทอร์เน็ตหลายเครื่อง

ความจริงที่ว่าสิ่งนี้มีผลกับอูบุนตู vm หลายตัวในการเชื่อมต่ออินเทอร์เน็ตหลายครั้งทำให้ฉันคิดว่ามีบางอย่างผิดปกติกับ repo ของ Ubuntu

ฉันจะลองแก้ไขปัญหานี้ได้อย่างไร

ปรับปรุง

ฉันพยายามล้าง '/ var / lib / apt / list / partial' และเรียกใช้ apt-get clean จากนั้นแทนที่แหล่งข้อมูลใน / etc / แหล่งที่มา / รายการโดยใช้ amazon mirror ที่แนะนำที่นี่:

ฉันยังคงได้รับข้อผิดพลาดที่คล้ายกัน

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

ดูคำตอบของฉันด้านล่างสำหรับคำอธิบาย ตัวกรองอินเทอร์เน็ตของฉันทำลายการดาวน์โหลด

ฉันจะเรียบเรียงคำถามใหม่เนื่องจากยังไม่มีคำตอบ

มีวิธีการแทนที่ Hash Sum ที่ไม่ตรงกันใน apt-get หรือไม่?


คุณล้างแคชตามที่แนะนำไว้ที่นี่หรือไม่
Kiwy

distro ของคุณยังรวมถึง apt-cacher NG หรือไม่? เพราะมันดูไม่น่าเชื่อถือ
Kiwy

ฉันเจอบล็อกนั้นแล้วและยืนยันว่าไม่ได้ติดตั้ง apt-cache-ng ปัญหาหายไปเมื่อฉันลองใช้ไฮเปอร์ไวเซอร์ตัวอื่นในการเชื่อมต่ออินเทอร์เน็ตอื่น
spuder

อาจเป็นการนำแฮชที่ใช้งานไม่ได้อย่างใดอย่างหนึ่งไปใช้กับไฮเปอร์ไวเซอร์ แต่ก็ยังแปลกมาก
Kiwy

โซลูชันของคุณใช้ได้สำหรับฉันเช่นกัน ฉันทำงานผ่านเซิร์ฟเวอร์ TinyProxy ที่โฮสต์บน AWS และมีการตั้งค่าตัวกรองโฆษณาบางส่วน เมื่อฉันกำจัดพร็อกซีใน apt.conf ทุกอย่างก็ใช้ได้ดี

คำตอบ:


20

ก่อนอื่นคุณควรเข้าใจว่าทำไมข้อผิดพลาด hash sum mismatch จึงเกิดขึ้น โดยทั่วไปมี 2 เหตุผล:

ประการแรกที่เก็บ apt บางแห่งใช้เมตาดาต้าที่บีบอัด LZMA (.xz) apt ก่อนเวอร์ชัน 1.0 ล้มเหลวในการคลายการบีบอัดไฟล์ LZMA อย่างถูกต้อง (บางครั้ง) ทำให้เกิดข้อผิดพลาด hash sum mismatch

มีอยู่สองรอบสำหรับการนี้:

  1. บอกไคลเอ็นต์ apt ของคุณว่าอย่าใช้ข้อมูลเมตาที่บีบอัดของ XZ
  2. อัปเกรด apt บนระบบของคุณเป็นเวอร์ชันที่ใหม่กว่า 1.0

ลองอ่านโพสต์บล็อกนี้ที่ฉันเขียนเกี่ยวกับปัญหานี้ซึ่งอธิบายรายละเอียดได้ดีขึ้น

ประการที่สองที่เก็บ APT เป็นอย่างโดยเนื้อแท้มีชีวิตชีวา ข้อมูลเมตา APT ที่แท้จริงนั้นเป็นบั๊กและการออกแบบทำให้เป็นไปไม่ได้ที่ไคลเอ็นต์ apt จะดาวน์โหลดข้อมูลเมตาของที่เก็บในวิธีที่สอดคล้องกันหากapt-get updateเกิดขึ้นในขณะที่กำลังมีการอัพเดตที่เก็บ

มีอยู่สองรอบสำหรับการนี้:

  1. อัพเกรดเป็นรุ่นใหม่ของ APTและให้แน่ใจว่าพื้นที่เก็บข้อมูลที่คุณสร้าง (หรือต้องการที่จะใช้) สนับสนุนAcquire โดยกัญชาคุณลักษณะ วิธีนี้จะช่วยแก้ไขปัญหาที่แกนกลาง แต่ไม่สามารถทำได้ในบางกรณีหากคุณไม่ได้ควบคุมที่เก็บ
  2. คุณสามารถลบข้อมูลเมตาที่แคชไว้ในระบบของคุณแล้วลองอีกครั้ง การทำเช่นนี้ระยะแรกตามมาด้วยapt-get clean ถัดไปวิ่งrm -rf /var/lib/apt/lists/* apt-get updateนี่จะดาวน์โหลดข้อมูลเมตาทั้งหมดอีกครั้ง หากที่เก็บข้อมูลที่คุณพยายามเชื่อมต่อไม่ได้อัปเดตตัวเองในขณะที่คุณกำลังใช้งานapt-get updateคุณจะไม่เป็นไร มิฉะนั้นคุณจะต้องทำสิ่งนี้อีกครั้ง

นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน! ขอบคุณสำหรับการโพสต์บล็อก
Amir Uval

คุณให้ความเห็นว่าเหมาะที่จะเป็นรุ่นล่าสุด คุณช่วยบอกวิธีการอัปเดตได้ไหม
Amir Uval

คุณใช้คุณสมบัติ Acquire-by-hash อย่างไร ฉันเคยเห็นบล็อกเกี่ยวกับเรื่องนี้แล้ว แต่พวกเขาไม่ได้บอกว่าไฟล์ใดที่จะใส่ไว้ในนั้นและพวกเขาจะไม่แสดงตัวอย่าง
LINUX G33NYUS

6

คิดออก

คอมพิวเตอร์สองเครื่องของฉันเหมือนกันทุกประการยกเว้นในคอมพิวเตอร์ส่วนบุคคลที่ฉันติดตั้งตัวกรองอินเทอร์เน็ต

ตัวกรองอินเทอร์เน็ต k9 ติดตั้งส่วนขยายเคอร์เนลที่เห็นได้ชัดว่ายุ่งกับการรับส่งข้อมูล

ทันทีที่ฉันถอนการติดตั้งตัวกรองปัญหาก็หายไป

ฉันยังคงค้นคว้าหากมีวิธีใดที่จะapt-get updateเพิกเฉยต่อข้อผิดพลาด Hash sum ที่เป็นวิธีแก้ปัญหา


จริง ๆ แล้วมันสมเหตุสมผลมากเพราะฉันเพิ่งเริ่มมีปัญหาหลังจากติดตั้ง k9; แต่ฉันไม่ได้ทำการเชื่อมต่อในเวลา การแก้ปัญหาจะดีเพราะเห็นได้ชัดว่าฉันไม่ต้องการปิดการใช้งานตัวกรอง (เพราะมันมีเหตุผล)
MuffinTheMan

ใช่ แต่ฉันจะทำอย่างนั้นได้อย่างไร (ลบตัวกรอง) เพราะฉันมีปัญหาแบบเดียวกันกับคุณ แต่ฉันยังคงติดอยู่ในนั้น

ดาวน์โหลด k9 เวอร์ชั่นล่าสุดได้จากเว็บไซต์ของพวกเขา จะมีตัวถอนการติดตั้งภายในแพ็คเกจการติดตั้ง
spuder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.