Как исправить ошибку «Списки пакетов или файл состояния не удалось проанализировать или открыть» во время обновления? [дубликат]

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

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.

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

371
задан 18 November 2015 в 03:54

10 ответов

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

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

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

Далее сгенерируйте новый, запустив простое обновление:

sudo apt-get update

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


* Для rm используются следующие опции: -v verbose

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

и -f сила

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

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

picture of man page options

498
ответ дан 5 January 2021 в 23:56

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

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

Вы можете создать свежий с такой командой:

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

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

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

0
ответ дан 5 January 2021 в 23:56

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

  • Перейти к Software & updates -> Ubuntu Software -> Загрузить с -> Other-> Выбрать лучший сервер

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

  • Теперь перезагрузите данные Repo, Все закончится должным образом.

4
ответ дан 5 January 2021 в 23:56

У меня возникла такая же проблема. Эти команды исправили её:

sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-new
sudo mv /var/lib/dpkg/status-old /var/lib/dpkg/status
sudo apt-get update
1
ответ дан 5 January 2021 в 23:56

Я работал в аналогичную ошибку:

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
ответ дан 5 January 2021 в 23:56

Я сделал

sudo apt-get clean
sudo apt-get update

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

19
ответ дан 5 January 2021 в 23:56

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

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

Для шага 3 закройте все открытые программы, которые вы можете. Возможно, будет безопасно держать ваш веб-браузер открытым, чтобы инструкции были перед вами. Но особенно важно убедиться, что все менеджеры пакетов не работают . Сюда входят Центр программного обеспечения, Средство обновления программного обеспечения (диспетчер обновлений в более старых версиях 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
ответ дан 5 January 2021 в 23:56

Вы облажались, когда редактировали / 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
ответ дан 5 January 2021 в 23:56

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

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

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

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

11
ответ дан 5 January 2021 в 23:56

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

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

См. также:

85
ответ дан 5 January 2021 в 23:56

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

Похожие вопросы: