Làm thế nào để bạn sửa lỗi apt-get update Hash Hash Sum không khớp


23

Tôi có một hộp ảo vm Ubuntu 12.04 mà tôi khởi tạo bằng Vagrant.

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

Ngay khi hộp vagrant chạy apt-get update, tôi nhận được lỗi sau.

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

Những điều tôi đã cố gắng khắc phục lỗi này.

  • Đã sử dụng 3 hộp Ubuntu 12.04 khác nhau từ ' http://www.vagrantbox.es '
  • giải pháp đề xuất ở đây :

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

  • Loại bỏ và lắp lại các gói phòng thí nghiệm bù nhìn

Tôi cũng đã thử các đề xuất tương tự mà tôi đã tìm thấy trong một vài trang đầu tiên của google. Tôi thậm chí đã thử nhiều máy tính và nhiều kết nối internet.

Thực tế là điều này đã ảnh hưởng đến nhiều ubfox vm trên nhiều kết nối internet khiến tôi nghĩ rằng có điều gì đó không ổn với repo ubfox.

Làm thế nào khác tôi có thể cố gắng khắc phục vấn đề này?

Cập nhật

Tôi đã thử dọn dẹp '/ var / lib / apt / list / part' và chạy apt-get clean sau đó thay thế các nguồn trong / etc / nguồn / list bằng cách sử dụng các gương amazon được đề xuất ở đây:

Tôi vẫn gặp một lỗi tương tự

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.

Cập nhật2

Tôi có 2 kết nối internet ở nhà, cả hai đều cho cùng một lỗi. Ngay khi tôi mang máy tính xách tay của tôi đến kết nối internet của công việc, vấn đề đã biến mất.

Tôi vẫn tò mò muốn hiểu tại sao kết nối internet của tôi sẽ làm cho bất kỳ sự khác biệt.

Cập nhật3

Xem câu trả lời của tôi dưới đây để giải thích. Bộ lọc internet của tôi đã làm hỏng việc tải xuống.

Tôi sẽ viết lại câu hỏi vì chưa có câu trả lời.

Có cách nào để ghi đè sự không phù hợp Hash Sum trong apt-get không?


Bạn đã làm sạch bộ nhớ cache như đề xuất ở đây ?
Kiwy

Ngoài ra distro của bạn có bao gồm apt-cacher NG? bởi vì nó có vẻ không đáng tin cậy
Kiwy

Tôi đã xem qua blog đó và tôi đã xác minh rằng apt-cache-ng chưa được cài đặt. Vấn đề đã biến mất khi tôi thử một trình ảo hóa khác trên một kết nối internet khác.
spuder

có thể là một triển khai bị hỏng của một hàm băm cụ thể trên một trình ảo hóa, nhưng nó vẫn rất lạ.
Kiwy

Giải pháp của bạn cũng làm việc cho tôi. Tôi đã chạy qua một máy chủ TinyProxy được lưu trữ trên AWS và có một số thiết lập bộ lọc quảng cáo. Khi tôi đã thoát khỏi proxy trong apt.conf, mọi thứ đều hoạt động tốt.

Câu trả lời:


20

Trước tiên, bạn nên hiểu tại sao xảy ra lỗi không khớp băm. Nói chung, có 2 lý do:

Thứ nhất, một số kho apt sử dụng siêu dữ liệu nén LZMA (.xz). apt trước phiên bản 1.0 không giải nén được lưu trữ LZMA một cách chính xác (đôi khi) gây ra lỗi không khớp với hàm băm.

Có hai cách giải quyết vấn đề này:

  1. Nói với khách hàng apt của bạn không sử dụng siêu dữ liệu nén XZ
  2. Nâng cấp apt trên hệ thống của bạn lên phiên bản mới hơn 1.0

Kiểm tra bài đăng trên blog này tôi đã viết về vấn đề này giải thích cả hai công việc xung quanh chi tiết hơn.

Thứ hai, kho APT vốn đã không phù hợp . Siêu dữ liệu APT thực tế là lỗi và thiết kế của nó khiến các máy khách apt không thể tải xuống siêu dữ liệu của kho theo cách nhất quán nếu apt-get updatexảy ra trong khi kho đang được cập nhật.

Có hai cách giải quyết vấn đề này:

  1. Nâng cấp lên phiên bản APT mới hơn và đảm bảo rằng kho lưu trữ bạn tạo (hoặc muốn sử dụng) hỗ trợ tính năng Nhận được bằng cách băm . Điều này khắc phục sự cố ở cốt lõi của nó, nhưng trong một số trường hợp không thể thực hiện được nếu bạn không kiểm soát kho lưu trữ.
  2. Bạn có thể xóa siêu dữ liệu được lưu trong bộ nhớ cache trên hệ thống của mình và thử lại. Để làm điều này, đầu tiên chạy apt-get cleantheo sau rm -rf /var/lib/apt/lists/*. Tiếp theo, chạy apt-get update. Điều này sẽ tải lại tất cả các siêu dữ liệu. Nếu kho lưu trữ mà bạn đang cố gắng kết nối không tự cập nhật trong khi bạn đang chạy apt-get update, bạn sẽ ổn. Nếu không, bạn sẽ phải làm điều này một lần nữa.

Đây là giải pháp duy nhất hiệu quả với tôi! Cảm ơn bài viết trên blog
Amir Uval

Bạn nhận xét rằng apt tốt hơn là phiên bản mới nhất. Bạn có thể vui lòng cho tôi biết làm thế nào để cập nhật nó?
Amir Uval

Làm thế nào chính xác để bạn sử dụng tính năng Acquire-by-hash? Tôi đã xem blog về nó nhưng họ không nói chính xác tập tin nào để đưa vào và họ không đưa ra một ví dụ.
LINUX G33NYUS

6

Tìm ra.

Hai máy tính của tôi giống hệt nhau về mọi mặt ngoại trừ trên máy tính cá nhân của tôi, tôi đã cài đặt bộ lọc internet.

Bộ lọc internet k9 đã cài đặt một phần mở rộng kernel có vẻ gây rối với lưu lượng.

Ngay khi tôi gỡ cài đặt bộ lọc, vấn đề đã biến mất.

Tôi vẫn đang nghiên cứu nếu có bất kỳ cách nào để apt-get updatebỏ qua sự không phù hợp Hash sum như một cách giải quyết.


Điều này thực sự rất có ý nghĩa, bởi vì gần đây tôi đã bắt đầu gặp vấn đề này sau khi cài đặt k9; nhưng tôi đã không thực hiện kết nối vào thời điểm đó. Một cách giải quyết sẽ tốt, vì rõ ràng tôi không muốn vô hiệu hóa bộ lọc (rốt cuộc, đó là lý do).
MuffinTheMan

Vâng, nhưng làm thế nào tôi có thể làm điều đó (loại bỏ bộ lọc), bởi vì tôi có cùng một vấn đề của bạn, nhưng dù sao tôi vẫn bị

Tải về phiên bản mới nhất của k9 từ trang web của họ. Sẽ có một trình gỡ cài đặt bên trong gói cài đặt.
kẻ lừa đảo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.