Как я могу исправить ошибку «Ошибка с файлом MergeList» или «status» при попытке выполнить обновление?
Компьютер дал мне этот вывод в окне:
E: Обнаружен раздел без заголовка Package:
E: Проблема с MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: Списки пакетов или файл состояния не могут быть проанализированы или открыты.
Как я могу это исправить?
8 ответов
Эти команды терминала должны решить вашу проблему:
Сначала удалите список слияния, открыв терминал (нажмите 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
для выхода из страницы будут внизу терминала, например,
Откройте терминал и выполните следующие команды по одному за раз:
sudo rm /var /lib /apt /lists /* -vf
Обновление sudo apt-get
См. также:
Вы поправились, когда отредактировали /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
.
Я сделал
sudo apt-get clean
Обновление sudo apt-get
и он работал.
В соответствии с шагами 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
Я также видел, что эта проблема возникает, когда у вас слишком много источников в ваших репозиториях.
Попробуйте решение, размещенное выше и /или, возможно, это, что иногда рекомендуется на панели запуска:
sudo mv /var /lib /apt /lists /var /lib /apt /lists-old
sudo mkdir -p /var /lib /apt /lists /partial
Обновление sudo apt-get
Сообщите нам, как вы поживаете.
Я столкнулся с аналогичной ошибкой:
Чтение списков пакетов ... Ошибка!
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
работал без проблем.
У меня была такая же проблема, и я попытался устранить все проблемы, упомянутые в других ответах. Как ни странно, единственным решением было другое:
-
Перейдите к Software & Обновления -> Ubuntu Software -> Загрузить From -> Other-> Выбрать лучший сервер
-
Ждите тестов. В конце тестов будет выбран лучший сервер, не обязательно ближайший, ни главный сервер, ни сервер для вашей локали.
-
Теперь перезагрузите данные репо, он будет правильно выполнен.