Вопрос Как я могу исправить ошибку «Проблема с MergeList» или «файл состояния не удалось разобрать» при попытке выполнить обновление?


Компьютер дал мне этот вывод в окне:

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.

Как я могу это исправить?


342
2018-03-12 17:13


происхождения


Мне все это непонятно, как неловко эта операционная система обрабатывает свои обновления, даже сейчас, что это и подобные вещи требуются после того, как пользователь не использует специальное злоупотребление. - matt


ответы:


Эти команды терминала должны решить вашу проблему:

Сначала удалите список слияния, открыв терминал (нажмите Ctrl+Alt+T для запуска) и выполните эту команду *:

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

Затем создайте новый, выполнив простое обновление:

sudo apt-get update

Здесь отчет об ошибке (а также другой) для этой проблемы, которая теперь исправлена, поэтому она не должна создавать новые искаженные файлы, однако, если у вас уже есть искаженные файлы, вам необходимо их удалить, как объяснено в этом сообщении.


* Параметры, используемые для rm, -v подробный

-v, --verbose                 объясните, что делается

а также -f сила

-f, --force                 игнорировать несуществующие файлы и аргументы, никогда не запрашивать

Если вы никогда не знаете о командной строке или используемых опциях, всегда обращайтесь к справочная страница для команды. Доступ к ним можно получить в Интернете путем поиска человека и команды, например человек rm или вы можете получить доступ к той же информации, введя точно такую ​​же команду в терминале, например man rm инструкции для выхода из страницы будут в нижней части терминала, как это

picture of man page options


473
2018-03-13 16:53



Один человек обнаружил, что ему приходилось делать эти два шага несколько раз, но в конечном итоге это сработало. - John S Gruber
Странно поставить -vf в конце rm команда. - Keith Thompson
Это не решило проблему для меня. обновление все еще показывает мне эту ошибку. - marines
Это повторяющаяся проблема. Время от времени это происходит. Кто-нибудь знает о причине этой проблемы? - Rushil
Я отредактировал ответ для понимания способности @jasser - Allan


Откройте терминал и выполните следующие команды по одному за раз:

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

Смотрите также:


80
2018-02-08 18:37



что делает -vf? - speedox
@speedox, согласно man rm, -v означает «многословный», и -f означает «сила». Другими словами, удалите все указанные файлы без запроса и сообщите пользователю, что он делает. - fouric
В моем случае просто sudo apt-get update исправлена ​​проблема. Я думаю, что Allan упомянул о новых версиях apt, которые исправляют это автоматически, поэтому, возможно, сначала попробуйте обновление. - ThorSummoner


Вы прищурились, когда редактировали /var/lib/dpkg/status, Восстановите его из резервной копии, сделанной перед ее редактированием. Конечно, вы сделали резервную копию, верно?

Поскольку вы не сделали резервную копию, отредактируйте ее снова, внимательно, Старайтесь не наносить больше урона.

Вы можете использовать /var/lib/dpkg/status.old в качестве контрольной точки. Это резервная копия status файл до последнего времени dpkg был запущен. Бег

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

чтобы увидеть различия. Отмените изменения, которые вы сделали вручную, и сохраните изменения, которые были сделаны последними dpkg запустить.

Если вы действительно не можете восстановить файл, скопируйте /var/lib/dpkg/status.old над /var/lib/dpkg/status, Вы получите хорошо сформированную, но устаревшую базу данных пакетов.

Вам не нужно редактировать /var/lib/dpkg/status при нормальной работе. Даже то, что дела идут серьезно неправильно, /var/lib/dpkg/status это не то, что требует вмешательства администратора. Независимо от ваших проблем с crossplatformui были, вероятно, лучший способ их решения. Единственный раз, когда мне нужно было редактировать /var/lib/dpkg/status было, когда вверх по течению Packages файл был сломан.


23
2018-05-13 15:37



Я также хотел бы знать, как лучше вы упомянули, чтобы удалить crossplatformui, если бы вы могли помочь, я попытался все возможное, чтобы удалить его, и попытался найти множество решений, но только тот, о котором я говорил, работал ... - Nirmik
@Nirmik Не знаю, о crossplatformui, Задайте это как отдельный вопрос. Я могу вам сказать, что за более чем десятилетие использования dpkg, включая многие неофициальные источники, мне очень редко нужно было редактировать status файл, и только тогда, когда был поврежден сторонний репозиторий. - Gilles
Хорошо ... Thanx много еще раз .... как вы полагаете, я опубликую его как новый вопрос :) также, поскольку вы, кажется, очень продвинутый пользователь, я хотел бы спросить вас, знаете ли вы что-нибудь о том, -KTEYS работать ?? (моя беспроводная клавиша работает) - Nirmik
Пытался поставить старую вместо нового, не исправился для меня. :-( - Stéphane Gourichon
Re: {Вы испортили, когда вы отредактировали / var / lib / dpkg / status}, как и для меня - нет, я не, я не касался этого файла :) Однако это только решение, которое разрешает проблему в моем дело. Спасибо. - ruslo


я сделал

sudo apt-get clean
sudo apt-get update

и это сработало.


18
2017-07-31 13:34



Не исправил меня. :-( - Stéphane Gourichon


Следуя шагам 2-5 в Процедура устранения неполадок диспетчера пакетов обычно решает эту проблему.

Для шаг 2, отключить все ваши PPA. Вы можете снять все из них в Software Sources так же, как вы снимите отметку с одного; видеть Как отключить определенный PPA?, Вы можете повторно включить их позже.

Для шаг 3, закройте все открытые программы, которые вы можете. Вероятно, безопасно держать ваш веб-браузер открытым, чтобы у вас были ваши инструкции перед вами. Но особенно важно убедиться, что все менеджеры пакетов не бегать, Это включает в себя Центр программного обеспечения, Обновление программного обеспечения (Update Manager в более старых версиях Ubuntu), Synaptic и Gdebi. Он также включает утилиты управления пакетами командной строки, такие как apt-get, dpkg, а также aptitude,

Заметим, что если другие пользователи одновременно регистрируются, они должны выйти из системы, если это возможно.

Для шаг 4, откройте окно терминала. Один из способов сделать это, который работает независимо от того, какую рабочую среду вы используете, - это нажать Ctrl+Alt+T,

Для шаг 5, запустите эти команды в окне терминала:

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"' _ '{}' \;

Я скопировал это дословно из PackageManagementTroubleshoootingProcedure 2 марта 2014 года. Эти команды развивались в прошлом и рекомендованные команды в этой статье могут быть изменены или расширены снова в будущем, Поэтому вы можете работать с шаг 5, (Эта статья, создано / отредактирован «Сторонники документации по документации Ubuntu» - особенно Марк Рикенберг--является лицензированный CC-BY-SA 3.0, что позволяет включить здесь с надлежащей атрибуцией.)

Некоторые из этих команд пытаются исправить проблему (а также могут отображать диагностическую информацию); другие отображают ценную информацию о проблеме, которую вы можете включить в свой вопрос или иным образом предоставлять кому-то, кто помогает вам. (Или, в зависимости от ваших навыков, может вы для диагностики и решения проблемы.)

Часто это исправляет его, но когда он этого не делает, он часто дает достаточно информации для его исправления.

Вам не нужно вручную вводить эти команды; вы можете их скопировать и вставить. Однако я рекомендую вставлять и запускать каждый отдельно. Это дает более четкое представление о том, из каких команд команды.


16
2017-11-28 02:36



Я скопировал весь блок и вставлю вместо запуска один за другим. Хотя несколько команд в этом бесполезны, а некоторые не удались, но, в конце концов, это помогает в моем случае - phuclv


Я также видел, как эта проблема возникает, когда у вас слишком много источников в ваших репозиториях.

Попробуйте решение, опубликованное выше и / или, возможно, это, что иногда рекомендуется на панели запуска:

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

Сообщите нам, как вы поживаете.


11
2018-05-08 10:19



Спасибо! Это не работало с DSL без makedir. - Doug


Я столкнулся с подобной ошибкой:

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.

Я следовал аналогичным предложениям для копирования status-old,

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

По моим причинам все мои статусные файлы были пустыми. К счастью, я обнаружил, что есть резервные копии этих файлов:

$ 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

Я проверил последнюю резервную копию ...

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

... но все еще было пусто. Поэтому я расстегнул старую ...

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

На этот раз было доволен. Поэтому я скопировал это ...

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

затем apt-get update бежал без проблем.

Кредит идет на этот пост.


4
2018-04-11 22:43





У меня была такая же проблема, и я попытался устранить все проблемы, упомянутые в других ответах. Как ни странно, единственным решением было другое:

  • Перейти к программному обеспечению и обновлениям -> Ubuntu Software -> Скачать с -> Другое-> Выбрать лучший сервер

  • Ждите тестов. В конце тестов будет выбран лучший сервер, не обязательно ближайший, а не основной сервер или сервер для вашей локали.

  • Теперь перезагрузите данные Repo, он завершится правильно.


3
2017-11-11 04:12