Как исправить проблему & mergeList & rdquo; или файл ldquo; status не могут быть проанализированы & rdquo; ошибка при попытке выполнить обновление?

Установите настройку ubuntu. Красота ubuntu tweak заключается в том, что вы можете сохранить настройки рабочего стола и приложения и восстановить после того, как вы что-то испортили. Он также имеет функцию возврата к исходным настройкам.

1
задан 18 November 2015 в 04:54

7 ответов

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

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

См. также:

https://help.ubuntu.com/community/PackageManagerTroubleshootingПроцедура [ ! d2]
79
ответ дан 25 May 2018 в 22:35
  • 1
    что делает -vf? – speedox 2 February 2013 в 21:42
  • 2
    @speedox, согласно man rm, -v означает «verbose», а -f означает «force». Другими словами, удалите все указанные файлы без запроса и сообщите пользователю, что он делает. – fouric 10 April 2013 в 05:21
  • 3
    В моем случае, только что sudo apt-get update исправил проблему. Я думаю, что Allan упомянул о новых версиях apt, которые исправляют это автоматически, поэтому, возможно, сначала попробуйте обновление. – ThorSummoner 4 September 2015 в 01:22

Вы отрезали, когда вы отредактировали /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
ответ дан 25 May 2018 в 22:35
  • 1
    Я также хотел бы знать, как лучше вы упомянули, чтобы удалить crossplatformui, если бы вы могли помочь, я попытался все возможное, чтобы удалить его, и попытался найти множество решений, но только тот, о котором я говорил, работал ... – Nirmik 13 May 2012 в 20:58
  • 2
    @Nirmik Не знаю, о crossplatformui. Задайте это как отдельный вопрос. Я могу сказать вам, что за более чем десятилетие использования dpkg, включая многие неофициальные источники, мне очень редко нужно было редактировать файл status и только тогда, когда был поврежден сторонний репозиторий. – Gilles 13 May 2012 в 21:01
  • 3
    Хорошо ... Thanx много еще раз .... как вы полагаете, я опубликую его как новый вопрос :) также, поскольку вы, кажется, очень продвинутый пользователь, я хотел бы спросить вас, знаете ли вы что-нибудь о том, -KTEYS работать ?? (моя беспроводная клавиша работает) – Nirmik 13 May 2012 в 21:08
  • 4
    Пытался поставить старую вместо нового, не исправился для меня. :-( – Stéphane Gourichon 26 November 2015 в 15:22
  • 5
    Re: {Вы испортили, когда вы отредактировали / var / lib / dpkg / status}, как и для меня - нет, я не, я не касался этого файла :) Однако это только решение, которое разрешает проблему в моем дело. Спасибо. – ruslo 8 November 2016 в 14:30

Я сделал

sudo apt-get clean
sudo apt-get update

, и он сработал.

18
ответ дан 25 May 2018 в 22:35

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

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

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

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

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

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

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

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

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

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

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

16
ответ дан 25 May 2018 в 22:35
  • 1
    Я скопировал весь блок и вставлю вместо запуска один за другим. Хотя несколько команд в этом бесполезны, а некоторые не удались, но, в конце концов, это помогает в моем случае – Lưu Vĩnh Phúc 15 January 2018 в 12:45

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

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

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

Сообщите нам, как вы это делаете.

11
ответ дан 25 May 2018 в 22:35

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

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
ответ дан 25 May 2018 в 22:35

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

Перейти к Software & amp; обновления -> Ubuntu Software -> Загрузить с -> Другое-> Выбрать лучший сервер Подождите испытания. В конце тестов будет выбран лучший сервер, не обязательно ближайший, а не основной сервер или сервер для вашей локали. Теперь перезагрузите данные Repo, он завершится правильно.
3
ответ дан 25 May 2018 в 22:35

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

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