ปัญหาในการดาวน์โหลดรายการแพ็กเกจเนื่องจากข้อผิดพลาด“ Hash sum mismatch” เกิดข้อผิดพลาด


387

เมื่อฉันตรวจสอบการอัปเดตฉันได้รับข้อผิดพลาด "ไม่สามารถดาวน์โหลดข้อมูลที่เก็บ"

นี่คือสิ่งที่เกิดขึ้นภายใต้รายละเอียด:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources  Hash Sum mismatch, 
E: Some index files failed to download. They have been ignored, or old ones used instead.

คำตอบ:


459

เพียงลบเนื้อหาทั้งหมดของ/var/lib/apt/listsไดเรกทอรี:

sudo rm -rf /var/lib/apt/lists/*

จากนั้นเรียกใช้:

sudo apt-get update

69
หากคุณลบไฟล์ทั้งหมดคุณต้องดาวน์โหลดอีกครั้ง คุณสามารถลบไฟล์ที่ไม่ถูกต้องออกเพื่อทำให้กระบวนการนี้เร็วขึ้น
Behrang

9
ฉันจำได้ว่าสิ่งนี้เกิดขึ้นกับ Debian ด้วย วิธีแก้ปัญหาคือการสลับที่เก็บข้อมูล (เช่นจาก us.ubuntu.com เป็น XX.ubuntu.com โดยที่ XX คือรหัสประเทศของคุณ) หรือรออยู่ ความคิดที่ดีที่สุดคือรอสักครู่แล้วลองใหม่ในภายหลัง การลบรายการอาจแก้ไขรายการที่ใช้งานไม่ได้
f.ardelian

4
คำถามเก่า แต่ในบาง distros (เช่น emdebian) หลังจากทำเช่นนี้คุณจะต้อง " mkdir /var/lib/apt/lists/partial" (ในฐานะที่เป็น root, ชัด ๆ .) หรืออื่น ๆ ที่คุณไม่สามารถ " apt-get update" หรือใช้ apt ได้
Archenoth

7
@AlyssaGono ถ้าเป็นโฟลเดอร์คุณต้องเรียกใช้ rm ด้วยการตั้งค่าสถานะแบบเรียกซ้ำดังนี้: sudo rm -R /var/lib/apt/lists/*อย่างไรก็ตามถึงแม้ว่าการทำเช่นนั้นจะไม่ได้ผลสำหรับฉัน
mchid

2
เราต้องการคำนำหน้า-rfดังนั้นมันจะดูเหมือนsudo rm -rf /var/lib/apt/lists/*
Askar

127

นี่เป็นปัญหาที่ทราบแล้วและมีการทำให้รุนแรงขึ้นสำหรับลูกค้าที่อยู่เบื้องหลังแคชพร็อกซี องค์กรขนาดใหญ่และ ISP บางแห่ง (โดยเฉพาะในพื้นที่ห่างไกลของโลก) มีแคชโปร่งใสซึ่งคุณอาจไม่ทราบ

ปัญหาพื้นฐานคือรูปแบบพื้นที่เก็บข้อมูล apt อยู่ภายใต้เงื่อนไขการแข่งขันเมื่อมีการปรับปรุงมิเรอร์ ปัญหานี้มีผลต่อที่เก็บที่เปลี่ยนแปลงอย่างรวดเร็วเช่นการพัฒนาที่วางจำหน่าย

คุณสามารถติดตามความคืบหน้าในการแก้ไขปัญหานี้ในข้อผิดพลาดนี้ (โปรดทำเครื่องหมายด้วยตัวคุณเองว่า "มีผลกับฉันด้วย" ในข้อผิดพลาด) และพิมพ์เขียวนี้ แต่โปรดทราบว่ามันเป็นปัญหาที่ซับซ้อนและอาจใช้เวลามากกว่าหนึ่งรุ่นในการแก้ไข


4
พิมพ์เขียวนั้นไม่สามารถเข้าถึงได้อีกต่อไป; นี่เป็นสำเนาที่บันทึกไว้
Eliah Kagan

16
ข้อผิดพลาดนี้ยังมีอยู่ใน Ubuntu 16.04
Scott Stensland

1
ข้อผิดพลาดได้รับการทำเครื่องหมายว่า "แก้ไขการเปิดตัว"

ฉันเพิ่งเปลี่ยนค่าเริ่มต้นมิเรอร์เป็นเซิร์ฟเวอร์ที่ดีที่สุด
habibun

99

วิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้คือ:

sudo apt-get clean
sudo apt-get update

12
หลังจากลองคำตอบที่ยอมรับแล้วฉันยังคงมีข้อผิดพลาดเดิมอยู่ลองใหม่ทันทีหลังจากนั้นแก้ไขปัญหาได้
Alex

17
ทำsudo rm -rf /var/lib/apt/lists/*แล้วsudo apto-get cleanแก้ไขปัญหาสำหรับฉันด้วย ไม่ทำงานอย่างโดดเดี่ยว
แคม

3
ไม่ได้ช่วยในอูบุนตู 16.04 ... ไม่ไม่แสดงความคิดเห็นดังกล่าวข้างต้นความช่วยเหลือใด ๆ
สกอตต์ STENSLAND

3
sudo apt-get cleanไม่ได้ช่วย 16.04 แต่sudo rm -rf /var/lib/apt/lists/*แก้ไขได้
sdaffa23fdsf

2
สำหรับฉันคำตอบที่ยอมรับไม่ทำงาน แต่อันนี้ใช้ได้ (Ubuntu 16.04)
JCasso

52

ทางออกเดียวที่ทำงานสำหรับฉันก็คือจากunix.stackexchange

มันเกิดขึ้นเนื่องจากมีข้อผิดพลาดที่รู้จักกันดีและวิธีแก้ปัญหาคือการอัพเดตด้วยวิธีการบีบอัดที่แตกต่างกันดังนั้นไฟล์จึงโหลดได้อย่างถูกต้องและการตรวจสอบสำเร็จ

ลองดูสิ:

sudo rm -rf /var/lib/apt/lists/partial
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

(ขอบคุณ @brook_hong จากความคิดเห็นในส่วนของ RM)


9
นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน ขอบคุณ
Cerin

3
มันก็ใช้ได้ผลเช่นกันสำหรับฉัน โปรดทราบว่าคุณไม่จำเป็นต้องเรียกใช้คำสั่งนี้เสมอ เพียงเรียกใช้ครั้งเดียวจากนั้นคุณสามารถเรียกใช้ "apt-get update" โดยไม่มีข้อผิดพลาด
dalf

2
ฉันลองใช้โซลูชันทั่วไปจากฟอรัมต่าง ๆ แต่ใช้งานได้นอกกรอบ ขอขอบคุณ.
wkhwilo

2
ทำงานให้ฉันใน Ubuntu 16.04 / linux mint
David Okwii

3
นี่เป็นทางออกเดียวที่ใช้ได้สำหรับฉันกำลังใช้ Ubuntu 16.04
Sunny Shukla

44

sudo apt-get updateฉันยังคงมีปัญหาหลังจากลบไดเรกทอรีและการทำ
เฉพาะขั้นตอนต่อไปนี้เท่านั้นที่แก้ไขปัญหาของฉัน:

sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list

ผมไม่ทราบว่านี้เป็นวิธีที่เหมาะสมของการแก้ไขมัน ...
ฉันได้พบวิธีการแก้ปัญหาที่นี่


13
หนึ่งควรทราบว่า - deส่วนบ่งชี้เซิร์ฟเวอร์สำหรับเยอรมนีและสคริปต์นี้แทนที่เซิร์ฟเวอร์ภายในด้วยเซิร์ฟเวอร์หลัก ไปที่แหล่งซอฟแวร์ GUI-way และสลับการตั้งค่าที่นั่นจะปลอดภัยและย้อนกลับได้สำหรับผู้ใช้จำนวนมาก ต่อไปนี้ควรใช้ได้กับทุกประเทศ:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT

23

สิ่งนี้อาจเกิดขึ้นได้หากมิเรอร์ของคุณไม่ทันสมัยหรือแสดงข้อผิดพลาดจากการโอเวอร์โหลด คุณสามารถรอสักครู่แล้วลองอีกครั้งหรือเปลี่ยนเป็นมิเรอร์อื่น:


2
เหตุใดเซิร์ฟเวอร์ไม่อัปเดตหรือมีข้อมูลมากเกินไปทำให้ไฟล์ที่มีชื่อถูกต้องสามารถดาวน์โหลดได้สำเร็จ (ในกรณีที่การเชื่อมต่อไม่ยุติจนกว่าจะมีการส่งและรับไบต์ทั้งหมด แต่เสียหาย? (ฉันไม่เห็นด้วยที่จะไม่เกิดขึ้นฉันแค่หวังว่าคุณจะสามารถอธิบายได้ว่าทำไมมันถึงเป็นเช่นนั้น)
Eliah Kagan

3
@EliahKagan ปัญหาปกติไม่ใช่ไฟล์ตัวเองเสียหาย แต่มีไฟล์ข้อมูล (ฉันง่าย แต่ไม่มากเกินไป) และไฟล์ดัชนีที่มีแฮช (ลายนิ้วมือ) ของไฟล์ข้อมูล เมื่อที่เก็บข้อมูลถูกอัพเดต (เกิดขึ้นทุกชั่วโมง) บนเซิร์ฟเวอร์หนึ่งไฟล์หลังจากที่ที่เก็บอื่น ๆ ได้รับการอัพเดต ตอนนี้อาจเกิดขึ้นได้ที่ลูกค้าของคุณ (apt-get หรือคล้ายกัน) เข้าถึงเซิร์ฟเวอร์เมื่อไฟล์ข้อมูลได้รับการปรับปรุง แต่ไฟล์ดัชนียังไม่ได้รับการปรับปรุง (หรือในทางกลับกัน) ยัง จากนั้นแฮชไม่ตรงกับไฟล์ข้อมูลและไคลเอนต์ (เท็จ) ถือว่าไฟล์ข้อมูลเสียหาย
Patrick Häcker

1
การเปลี่ยนกระจกใช้งานได้สำหรับฉันเมื่อไม่มีคำตอบใด ๆ ข้างต้น
มะม่วง

10

หากคุณอยู่หลังพร็อกซีให้สร้างไฟล์ชื่อ99fixbadproxyใน/etc/apt/apt.conf.d/:

sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

วางสิ่งนี้ลงใน99fixbadproxyและบันทึก:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

ตอนนี้รันคำสั่ง update:

sudo apt-get update

1
ว้าวฉันพยายามทุกคำตอบมันแปลกมากที่มีปัญหาต่าง ๆ มากมายที่ส่งผลให้เกิดอาการเดียวกัน
คู่ที่

1
ฉันเป็นหนี้บุญคุณมากสำหรับคำตอบนี้
bremen_matt

5

คำสั่งต่อไปนี้อาจแก้ไขปัญหาของคุณ

sudo rm -R /var/lib/apt/lists/partial/*

แล้ว

sudo apt-get update && sudo apt-get upgrade

มันจะแก้ปัญหาของคุณ. ฉันยังประสบปัญหาเดียวกัน แต่คำสั่งข้างต้นแก้ไขปัญหาให้ฉัน ดังนั้นพวกเขาลอง

การอ้างอิงโซลูชัน


4
ฉันลองแล้วก็ใช้ไม่ได้ apt-get updateไฟล์แรกที่สร้างในตำแหน่งเดียวกันอีกครั้งในไดเรกทอรีนั้น
Volker Siegel

3

ฉันมีปัญหาเดียวกันที่แน่นอนและวิธีแก้ปัญหาทั้งหมดที่มีให้โดยใช้เทอร์มินัลก็ไม่ได้ช่วยอะไร

สำหรับฉันมันเป็นไปโดย:

การตั้งค่า→ซอฟแวร์และซอฟแวร์อัพเดท→อูบุนตู: ดาวน์โหลดจาก: ไปChange LocalMain Server

มันเริ่มโหลด repos ใหม่และอัพเดท เมื่อฉันเข้าร่วม:

sudo apt-get update

หลังจากนั้นก็ไม่มีปัญหาอะไรเลย ฉันใช้ Ubuntu 14.04.4 LTS


1

ฉันไม่ทราบว่ามันเป็นวิธีการแก้ปัญหาที่เหมาะสมหรือไม่ แต่ฉันทำสิ่งต่อไปนี้และข้อความแสดงข้อผิดพลาดหายไป:

หลังจากพิมพ์sudo apt-get updateเทอร์มินัลมันทำให้ฉันชื่อของแพคเกจบางอย่างที่ทำให้เกิดข้อผิดพลาดแล้วฉันทำต่อไปนี้:

Update manager (อัปเดตซอฟต์แวร์) →การตั้งค่า→กำหนดค่าแหล่งซอฟท์แวร์→ซอฟต์แวร์อื่น ๆ [แท็บ] →ยกเลิกการเลือกแพ็คเกจ

หลังจากกดปุ่ม "ปิด" ตัวจัดการอัปเดตเริ่มตรวจสอบการอัปเดตโดยอัตโนมัติอีกครั้งและฉันเห็นข้อความนี้: "ซอฟต์แวร์บนคอมพิวเตอร์นี้เป็นรุ่นล่าสุดการตรวจสอบครั้งล่าสุดเมื่อ 2 วินาทีที่ผ่านมา"

Kubuntu 12.04


สิ่งนี้ใช้ได้สำหรับฉันและไม่มีวิธีแก้ไขปัญหาอื่นที่โพสต์ที่นี่ใช้งานได้ ยกเว้นว่าฉันไม่มี Ubuntu UI (เรียกใช้บรรทัดคำสั่งภายใต้ WSL เท่านั้น) ดังนั้นสำหรับแต่ละแพ็คเกจ<pkg>ที่เกิดข้อผิดพลาดแทนฉันจึงเรียกใช้ `sudo apt-get install <pkg> ' ฉันใช้ Ubuntu 16.04
Yitz

1

ฉันมีปัญหาเดียวกันที่แน่นอนและวิธีแก้ปัญหาทั้งหมดที่มีให้โดยใช้เทอร์มินัลก็ไม่ได้ช่วยอะไร

สำหรับฉันมันเป็นไปโดย:

การตั้งค่า→ซอฟต์แวร์ & การปรับปรุง→ซอฟต์แวร์อื่น: ยกเลิกการเลือกช่องทั้งหมดแล้วกดปิด

มันเริ่มโหลด repos ใหม่และอัพเดท เมื่อฉันเข้าร่วม:

sudo apt-get update

หลังจากนั้นก็ไม่มีปัญหาอะไรเลย ฉันใช้ Ubuntu 13.10


สิ่งนี้ใช้งานได้ แต่มันทำให้ตาบอดได้อย่างมีประสิทธิภาพเครื่องจากความสามารถในการติดตั้งแพคเกจที่ไม่ได้เป็นส่วนหนึ่งของการสร้างแกน (จนกว่าช่องทำเครื่องหมายเหล่านั้นจะถูกเปิดใช้งานอีกครั้งในภายหลัง) ... ติดตั้งแพคเกจเป้าหมาย
Scott Stensland

1

ฉันมีปัญหาที่คล้ายกันและแก้ไขได้โดยการเปิดแอปพลิเคชัน "ซอฟต์แวร์ & การอัพเดท" และในแท็บ "ซอฟต์แวร์ Ubuntu" การเปลี่ยนค่าของ "ดาวน์โหลดจาก" (ในรายการดรอปดาวน์นั้นลองเลือกตัวอย่างเช่นหลัก เซิร์ฟเวอร์ถ้ามันไม่เป็นเช่นนั้น)


ใช่มีเพียงสิ่งเดียวที่เหมาะกับฉัน เซิร์ฟเวอร์สวิสเซอร์แลนด์ดูเหมือนว่าจะใช้งานไม่ได้
Eric MORAND

1

ดังต่อไปนี้ @ robie-basak ฉันใช้apt-cacher-ngเป็นแคชแคช ดังนั้นฉันจึงลบพร็อกซีและแก้ไขปัญหาได้แล้ว

ฉันลบพรอกซีในไฟล์/etc/apt/apt.conf.d/01proxy:

#Acquire::http::Proxy "http://xxx.xx.xx.xx:4321";

จากนั้นจำเป็นต้อง:

sudo rm -rf /var/lib/apt/lists/*
sudo aptitude update
sudo aptitude upgrade

1

ฉันเพิ่งติดตั้ง Ubuntu 17.10 และได้รับข้อผิดพลาดเดียวกันของ Hash Sum Mismatch สำหรับที่เก็บบางอันฉันไปที่ Software และ Checked Source ดังที่แสดงด้านล่างและไม่มีปัญหาเพิ่มเติมสำหรับการดาวน์โหลดที่เก็บจากเทอร์มินัล

ส่วนซอฟต์แวร์และการอัพเดทของฉัน


0

สิ่งนี้อาจเกิดขึ้นได้หากคุณใช้เราเตอร์ที่มีการควบคุมโดยผู้ปกครองและไม่ได้ใส่ราสเบอร์รี่ปี่ลงในรายการ "ไม่มีการจัดการ" สำหรับฉันฉันเห็นว่า URL กำลังเปลี่ยนเส้นทางไปยังโดเมนวงกลมจัดการโดยเราเตอร์

ดังนั้นฉันเพิ่งเพิ่ม pi ของฉันไปยังรายการที่ไม่มีการจัดการและทำงานได้ดี


0

ฉันได้แก้ไขแพ็คเกจทั้งหมดที่ไม่ได้ติดตั้งโดยใช้คำสั่งนี้:

sudo apt-get install PACKAGENAME

สำหรับแต่ละแพ็คเกจ ตอนนี้ติดตั้งแล้วและข้อผิดพลาด "Hash Sum mismatch" หายไป


0

ไม่มีอะไรทำงานให้ฉัน หลังจากลองและวิธีแก้ปัญหาที่แนะนำแล้วในที่สุดฉันได้ดาวน์โหลดแพ็คเกจที่เสียหายด้วยตนเองคัดลอกลงใน / var / cache / apt / archives และลบแพ็คเกจที่เสียหายออกจาก / var / cache / apt / archives / บางส่วน


0

ฉันประสบปัญหาเดียวกันใน Ubuntu 18.04 ของฉันด้านล่างเป็นประสบการณ์จริงของฉัน:

  1. ลบพร็อกซีใน /etc/apt/apt.conf
  2. เปลี่ยนเป็นรายการแหล่งที่มาของ apt อย่างเป็นทางการ /etc/apt/sources.list
  3. วิ่ง sudo rm -rf /var/lib/apt/lists/*
  4. แพ็คเกจทำความสะอาด sudo apt autoremove -y && sudo apt autoclean -y
  5. อัปเดตและอัปเกรด sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

ทำ!


0

สิ่งนี้เกิดขึ้นกับฉันใน Ubuntu 16.04 และไม่มีวิธีแก้ปัญหาที่ได้รับการโหวตสูงสุด ทางออกคือการอัพเกรดแพ็คเกจ:

sudo apt-get update    # this will fail
sudo apt-get upgrade
sudo apt-get update    # this will succeed

ไม่แน่ใจว่าการล้างรายการเก่า ( sudo rm -rf /var/lib/apt/lists/*และ / หรือsudo apt-get clean) ช่วยหรือไม่! ใช้พวกเขาหากจำเป็น


0

20190112 #Errors #apt #Fix #Updates ล้มเหลวในการเรียก ... Hash Sum ไม่ตรงกัน

  1. เรียกใช้ apt-get และค้นหาคำสำคัญที่ต้องการค้นหาใน/etc/apt:
    • $ sudo apt-get -y update
    • ...
    • ข้อผิดพลาด: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64 ไอคอน
    • Hash Sum ไม่ตรงกัน
    • ...
    • ในกรณีนี้คำหลักคือ "DEP-11"
  2. ค้นหา/etc/aptต้นไม้สำหรับคำหลัก:
    • $ sudo find / etc / apt -type f -exec egrep -in "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## ไฟล์นี้ให้บริการโดย appstreamcli (1) เพื่อดาวน์โหลด DEP-11
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: คำอธิบาย "$ (ปล่อย) / $ (ส่วนประกอบ) $ (NATIVE_ARCHITECTURE) DEP-11 เมทาดาทา";
    • /apt.conf.d/50appstream:15: # ไอคอนขนาดปกติสำหรับส่วนประกอบ GUI ที่อธิบายไว้ใน DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20: คำอธิบาย "$ (ปล่อย) / $ (ส่วนประกอบ) DEP-11 64x64 ไอคอน";
    • /apt.conf.d/50appstream:27: # ข้อมูลเมตา DEP-11 YAML
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: คำอธิบาย "$ (RELEASE) / $ (ส่วนประกอบ) DEP-11 ไอคอน 128x128";
  3. เมื่อพบรายการที่ละเมิดให้ย้ายไปที่ไหนสักแห่งในกรณีที่วิธีนี้ใช้ไม่ได้:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. ทำความสะอาด/var/lib/apt:

    sudo apt-get -y clean  
    sudo rm -rf /var/lib/apt/lists/*  
    sudo find /var/lib/apt -type d -name "partial" -exec rm -rf "{}" ";"  
    
  5. ลองอัปเดตทันทีตอนนี้ควรใช้งานได้แล้ว:

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