Как исправить ошибку "Проблема с 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.

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

8 ответов

Решение

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

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

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

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

sudo apt-get update

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


* Опции, используемые для rm: -v подробный

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

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

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

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

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

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

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

Вы облажались, когда вы редактировали /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 Файл был сломан.

Я сделал

sudo apt-get clean
sudo apt-get update

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

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

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

На шаге 3 закройте все открытые программы, которые вы можете. Вероятно, безопасно держать ваш веб-браузер открытым, чтобы ваши инструкции были перед вами. Но особенно важно убедиться, что менеджеры пакетов не запущены. Это включает Центр программного обеспечения, Software Updater (Менеджер обновлений в более старых версиях 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"' _ '{}' \;

Я дословно скопировал это из https://help.ubuntu.com/community/PackageManagerTroubleshootingProcedure 2 марта 2014 года. Эти команды развивались в прошлом, и рекомендуемые команды в этой статье могут быть изменены или расширены в будущем. Таким образом, вы можете работать с шага 5 там. (Эта статья, созданная / отредактированная " Сторонниками вики-документации по Ubuntu"- особенно Марком Рийкенбергом - лицензирована CC-BY-SA 3.0, что позволяет включать ее здесь с надлежащей атрибуцией.)

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

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

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

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

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

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

Дайте нам знать, как вы поживаете.

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

  • Перейдите в раздел "Программное обеспечение и обновления" -> "Программное обеспечение Ubuntu" -> "Загрузить с" -> "Другие" -> "Выбрать лучший сервер".

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

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

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

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 побежал без проблем.

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

Одноразовое решение этой проблемы - запустить в терминале одну за другой следующие две команды (Ctrl+Alt+T):

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

Вы можете создать новый с помощью этой команды:

sudo apt-get clean && sudo apt-get update

Вуаля! Это должно решить "проблему со списком слияния".

Ссылка: Как исправить ошибку обновления Ubuntu: проблема с MergeList

Другие вопросы по тегам