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

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

E: Обнаружен раздел без заголовка Package:
E: Проблема с MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: Списки пакетов или файл состояния не могут быть проанализированы или открыты.

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

apt
340 голосов | спросил user12250 12 MarpmSat, 12 Mar 2011 20:13:04 +03002011-03-12T20:13:04+03:0008 2011, 20:13:04

8 ответов


471

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

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

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

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

sudo apt-get update

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


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

  

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

и -f force

  

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

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

picture параметров страницы человека

ответил Allan 13 MarpmSun, 13 Mar 2011 19:53:29 +03002011-03-13T19:53:29+03:0007 2011, 19:53:29
80

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

sudo rm /var /lib /apt /lists /* -vf
Обновление sudo apt-get

См. также:

ответил tommyk 8 FebruaryEurope/MoscowbTue, 08 Feb 2011 21:37:55 +0300000000pmTue, 08 Feb 2011 21:37:55 +030011 2011, 21:37:55
23

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

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

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

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.

ответил Gilles 13 Maypm12 2012, 19:37:43
18

Я сделал

sudo apt-get clean
Обновление sudo apt-get

и он работал.

ответил psychok7 31 J000000Tuesday12 2012, 17:34:17
16

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

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

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

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

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

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

убунту-поддержка-статус
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 /доступно-плохо
sudo cp /var /lib /dpkg /available-old /var /lib /dpkg /доступно
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», - особенно Марк Рикенберг --is ответил Eliah Kagan 28 12011vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2011 06:36:46 +0400 2011, 06:36:46

11

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

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

sudo mv /var /lib /apt /lists /var /lib /apt /lists-old
sudo mkdir -p /var /lib /apt /lists /partial
Обновление sudo apt-get

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

ответил andybleaden 8 Maypm11 2011, 14:19:45
4

Я столкнулся с аналогичной ошибкой:

Чтение списков пакетов ... Ошибка!
E: Обнаружен раздел без заголовка Package:
E: Проблема с MergeList /var /lib /dpkg /status
E: Списки пакетов или файл состояния не могут быть проанализированы или открыты.

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

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

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

$ ls -l /var/backups/dpkg.status.*
-rw-r-r-- 1 корень root 444620 15 ноя 06:33 /var/backups/dpkg.status.0
-rw-r - r-- 1 корень root 444620 15 ноя 06:33 /var/backups/dpkg.status.1.gz
-rw-r-r-- 1 корень root 128168 20 сентября 2013 /var/backups/dpkg.status.2.gz
-rw-r-r-- 1 корень root 112545 16.09.2013 /var/backups/dpkg.status.3.gz
-rw-r-r-- 1 корень root 107767 14 сентября 2013 /var/backups/dpkg.status.4.gz
-rw-r-r-- 1 корень root 107766 11 сентября 2013 /var/backups/dpkg.status.5.gz
-rw-r-r-- 1 корень root 94583 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 работал без проблем.

Кредит отправляется на это сообщение.

ответил Andrew 12 AMpSat, 12 Apr 2014 02:43:20 +040043Saturday 2014, 02:43:20
3

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

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

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

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

ответил Muhammad El Nakeep 11 32015vEurope/Moscow11bEurope/MoscowWed, 11 Nov 2015 07:12:11 +0300 2015, 07:12:11

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132