Câu hỏi Làm cách nào để khắc phục lỗi “Sự cố với MergeList” hoặc “tệp trạng thái không thể phân tích cú pháp” khi cố cập nhật?


Máy tính đã cho tôi đầu ra này trong một cửa sổ:

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Làm thế nào tôi có thể sửa lỗi này?


342
2018-03-12 17:13


gốc


Nó khiến tôi bối rối khi hệ điều hành này xử lý các bản cập nhật của mình một cách vụng về, ngay cả bây giờ, điều này và những thứ tương tự được yêu cầu sau khi người dùng không sử dụng sai mục đích đặc biệt. - matt


Các câu trả lời:


Các lệnh terminal này sẽ giải quyết vấn đề của bạn:

Đầu tiên loại bỏ Danh sách Hợp nhất bằng cách mở một thiết bị đầu cuối (Nhấn Ctrl+Alt+T để khởi động) và chạy lệnh này *:

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

Tiếp theo, tạo một cái mới bằng cách chạy một bản cập nhật đơn giản:

sudo apt-get update

Đây là báo cáo lỗi (và khác) cho vấn đề này, hiện đã được khắc phục, do đó không nên tạo các tệp không đúng định dạng mới, tuy nhiên nếu bạn đã có các tệp không đúng định dạng, bạn cần xóa chúng như được giải thích trong bài đăng này.


* Các tùy chọn được sử dụng cho rm là -v dài dòng

-v, --verbose                 giải thích những gì đang được thực hiện

-f lực lượng

-f, --force                 bỏ qua các tệp và đối số không tồn tại, không bao giờ nhắc

Nếu bạn không chắc chắn về một dòng lệnh hoặc các tùy chọn được sử dụng luôn luôn tham khảo trang thủ công cho lệnh. Đây có thể được truy cập trên internet bằng cách tìm kiếm người đàn ông và lệnh ví dụ người đàn ông rm hoặc bạn có thể truy cập cùng một thông tin bằng cách gõ chính xác lệnh tương tự trong thiết bị đầu cuối ví dụ man rm hướng dẫn để thoát trang sẽ ở dưới cùng của thiết bị đầu cuối như thế này

picture of man page options


473
2018-03-13 16:53



Một cá nhân nhận thấy anh ta phải thực hiện hai bước này nhiều lần, nhưng cuối cùng nó đã hoạt động. - John S Gruber
Thật kỳ quặc khi đặt -vfở cuối rm chỉ huy. - Keith Thompson
Nó không giải quyết được vấn đề cho tôi. cập nhật vẫn cho tôi thấy lỗi đó. - marines
Đây là một vấn đề định kỳ. Nó liên tục xảy ra một lần trong một thời gian. Có ai biết nguyên nhân của vấn đề này không? - Rushil
Tôi đã chỉnh sửa câu trả lời cho khả năng hiểu @jasser - Allan


Mở một Terminal và chạy các lệnh sau tại một thời điểm:

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

Xem thêm:


80
2018-02-08 18:37



những gì hiện các -vf làm gì? - speedox
@speedox, theo man rm, -v có nghĩa là 'tiết', và -f có nghĩa là 'lực'. Nói cách khác, loại bỏ tất cả các tập tin được chỉ định mà không cần nhắc và cho người dùng biết nó đang làm gì. - fouric
Trong trường hợp của tôi, chỉ cần làm sudo apt-get update đã khắc phục sự cố. Tôi nghĩ Allan đã đề cập đến các phiên bản mới hơn của apt để sửa lỗi này một cách tự động, vì vậy có lẽ chỉ cần thử cập nhật trước. - ThorSummoner


Bạn đã sửa đổi khi bạn chỉnh sửa /var/lib/dpkg/status. Khôi phục nó từ bản sao lưu mà bạn đã thực hiện trước khi chỉnh sửa nó. Tất nhiên, bạn đã thực hiện một sao lưu, phải không?

Vì bạn không tạo bản sao lưu, hãy chỉnh sửa lại, cẩn thận. Cố gắng không gây ra nhiều thiệt hại hơn.

Bạn có thể dùng /var/lib/dpkg/status.old như một điểm tham chiếu. Đây là bản sao lưu của status tập tin từ trước thời gian qua dpkg đã chạy. Chạy

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

để thấy sự khác biệt. Hoàn tác các thay đổi bạn đã thực hiện theo cách thủ công và giữ các thay đổi được thực hiện bởi dpkg chạy.

Nếu bạn thực sự không thể quản lý để sửa chữa các tập tin, sao chép /var/lib/dpkg/status.old kết thúc /var/lib/dpkg/status. Bạn sẽ nhận được một cơ sở dữ liệu trọn gói, nhưng đã lỗi thời.

Bạn không bao giờ cần chỉnh sửa /var/lib/dpkg/status trong hoạt động bình thường. Ngay cả những điều roi đi sai lầm nghiêm trọng, /var/lib/dpkg/status không phải là thứ có xu hướng yêu cầu sự can thiệp của quản trị viên. Dù bạn có vấn đề gì với crossplatformui là, có lẽ là cách tốt hơn để giải quyết chúng. Lần duy nhất tôi từng cần chỉnh sửa /var/lib/dpkg/status là khi thượng nguồn Packages tệp đã bị hỏng.


23
2018-05-13 15:37



Tôi cũng muốn biết cách tốt hơn bạn đề cập đến để loại bỏ crossplatformui nếu bạn có thể giúp coz tôi đã thử mọi cách có thể để loại bỏ nó và cố gắng tìm kiếm nhiều giải pháp nhưng chỉ có một tôi đã đề cập đã làm việc ... - Nirmik
@Nirmik Không có ý tưởng về crossplatformui. Hỏi đó như một câu hỏi riêng. Tôi có thể nói với bạn rằng trong hơn một thập kỷ sử dụng dpkg, bao gồm nhiều nguồn không chính thức, tôi rất hiếm khi cần chỉnh sửa status và chỉ khi có kho lưu trữ của bên thứ ba bị hỏng. - Gilles
Được rồi ... Thanx rất nhiều lần nữa .... như bạn đề nghị tôi sẽ đăng nó như một câu hỏi mới :) cũng như bạn có vẻ như một người dùng rất tiên tiến tôi muốn hỏi bạn nếu bạn biết bất cứ điều gì về việc không hoạt động HOT -KTEYS làm việc ?? (phím tắt không dây của tôi hoạt động) - Nirmik
Cố gắng để đặt cũ ở vị trí của mới, đã không sửa chữa cho tôi. :-( - Stéphane Gourichon
re: {Bạn đã sửa lỗi khi bạn chỉnh sửa / var / lib / dpkg / status} như tôi - không, tôi không, tôi chưa chạm vào tệp này :) Tuy nhiên, đây chỉ là giải pháp khắc phục sự cố trong trường hợp. Cảm ơn bạn. - ruslo


tôi đã làm

sudo apt-get clean
sudo apt-get update

va no đa hoạt động.


18
2017-07-31 13:34



Không sửa chữa cho tôi. :-( - Stéphane Gourichon


Thực hiện các bước 2-5 trong Trình quản lý gói Xử lý sự cố thường giải quyết vấn đề này.

Dành cho bước 2, vô hiệu hóa tất cả các PPA của bạn. Bạn có thể bỏ chọn tất cả chúng trong Nguồn phần mềm giống như cách bạn bỏ chọn chỉ một; xem Làm thế nào để vô hiệu hóa một PPA cụ thể?. Bạn có thể bật lại sau.

Dành cho bước 3, đóng mọi chương trình đang mở bạn có thể. Có thể an toàn để giữ cho trình duyệt web của bạn mở để bạn có hướng dẫn trước mặt bạn. Nhưng điều đặc biệt quan trọng là phải đảm bảo mọi người quản lý gói đều không chạy. Điều này bao gồm Trung tâm phần mềm, Trình cập nhật phần mềm (Trình quản lý cập nhật trong các phiên bản cũ hơn của Ubuntu), Synaptic và Gdebi. Nó cũng bao gồm các tiện ích quản lý gói dòng lệnh như apt-get, dpkgaptitude.

Lưu ý rằng nếu những người dùng khác được đăng nhập cùng một lúc, họ nên đăng xuất nếu có thể.

Dành cho bước 4, mở cửa sổ đầu cuối. Một cách để làm điều này hoạt động không có vấn đề gì môi trường máy tính để bàn bạn sử dụng, là để báo chí Ctrl+Alt+T.

Dành cho bước 5, chạy các lệnh này trong cửa sổ đầu cuối:

ubuntu-support-status
sudo grep -R proxy /etc/apt/*
grep proxy  /etc/environment
echo $http_proxy
echo $ftp_proxy
grep proxy /etc/bash.bashrc
grep proxy ~/.bashrc
cat /etc/apt/apt.conf
sudo fuser -vvv /var/lib/dpkg/lock
sudo fuser -vvv /var/cache/apt/archives/lock
cat /etc/lsb-release
uname -a
sudo rm /var/lib/apt/lists/lock 
sudo rm  /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status  ||  sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status
sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
sudo dpkg --configure -a
sudo dpkg --clear-avail
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade
find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n$1\n"; cat -n "$1"' _ '{}' \;

Tôi đã sao chép nguyên văn đó từ PackageManagementTroubleshoootingProcedure vào ngày 2 tháng 3 năm 2014. Các lệnh này đã phát triển trong quá khứ và các lệnh được đề xuất trong bài viết đó có thể được thay đổi hoặc mở rộng lại trong tương lai. Vì vậy, bạn có thể muốn làm việc từ bước 5 ở đó. (Bài viết đó, đã tạo / chỉnh sửa bởi "Những người đóng góp cho wiki tài liệu Ubuntu" - đặc biệt Mark Rijckenberg--Là được cấp phép CC-BY-SA 3.0, cho phép đưa vào đây với phân bổ phù hợp.)

Một số lệnh cố gắng khắc phục sự cố (và cũng có thể hiển thị thông tin chẩn đoán); những người khác hiển thị thông tin có giá trị về vấn đề mà bạn có thể đưa vào câu hỏi của mình hoặc cung cấp cho người khác giúp bạn. (Hoặc, tùy thuộc vào kỹ năng của bạn, có thể bật bạn để chẩn đoán và giải quyết nó.)

Thường thì điều này sửa chữa nó, nhưng khi nó không thường xuyên cung cấp đủ thông tin để sửa chữa nó.

Bạn không phải gõ các lệnh đó theo cách thủ công; bạn có thể sao chép và dán chúng. Tuy nhiên, tôi khuyên bạn nên dán và chạy từng ứng dụng riêng biệt. Điều này làm cho nó rõ ràng hơn những gì đầu ra là từ các lệnh.


16
2017-11-28 02:36



Tôi đã sao chép toàn bộ khối và dán thay vì chạy từng cái một. Mặc dù một số lệnh trong này là vô ích và một số thất bại, nhưng cuối cùng nó giúp trong trường hợp của tôi - phuclv


Tôi cũng đã thấy vấn đề này xảy ra khi bạn có quá nhiều nguồn trong repo của bạn.

Hãy thử giải pháp được đăng ở trên và / hoặc cũng có thể điều này đôi khi được đề xuất trên bệ phóng:

sudo mv /var/lib/apt/lists /var/lib/apt/lists-old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update

Hãy cho chúng tôi biết bạn lấy như thế nào.


11
2018-05-08 10:19



Cảm ơn bạn! Điều này đã không làm việc với DSL mà không có makedir là tốt. - Doug


Tôi đã chạy vào một lỗi tương tự:

Reading package lists... Error!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/dpkg/status
E: The package lists or status file could not be parsed or opened.

Tôi đã làm theo các đề xuất tương tự để sao chép status-old.

$ head /var/lib/dpkg/status
$ head /var/lib/dpkg/status-old

Tất cả các tệp trạng thái của tôi đều trống vì một số lý do. May mắn thay, tôi phát hiện có bản sao lưu của các tệp này:

$ ls -l /var/backups/dpkg.status.*
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.0
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.1.gz
-rw-r--r-- 1 root root 128168 Sep 20  2013 /var/backups/dpkg.status.2.gz
-rw-r--r-- 1 root root 112545 Sep 16  2013 /var/backups/dpkg.status.3.gz
-rw-r--r-- 1 root root 107767 Sep 14  2013 /var/backups/dpkg.status.4.gz
-rw-r--r-- 1 root root 107766 Sep 11  2013 /var/backups/dpkg.status.5.gz
-rw-r--r-- 1 root root  94583 Sep 11  2013 /var/backups/dpkg.status.6.gz

Tôi đã kiểm tra bản sao lưu mới nhất ...

$ head /var/backups/dpkg.status.0

... nhưng nó vẫn trống. Vì vậy, tôi giải nén một cái cũ hơn ...

$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1

Lần này có nội dung. Vì vậy, tôi đã sao chép nó ...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Sau đó apt-get update chạy mà không có vấn đề gì.

Tín dụng đi tới bài đăng này.


4
2018-04-11 22:43