Questão Como faço para corrigir um erro "Problema com MergeList" ou "arquivo de status não pôde ser analisado" ao tentar fazer uma atualização?


O computador me deu essa saída em uma janela:

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.

Como posso consertar isso?


342
2018-03-12 17:13


origem


Fico me desconcertando o quão desajeitadamente esse sistema operacional lida com suas atualizações, mesmo agora, que isso e coisas semelhantes são necessárias depois de nenhum abuso especial pelo usuário. - matt


Respostas:


Esses comandos do terminal devem resolver seu problema:

Primeiro remova a lista de mesclagem abrindo um terminal Ctrl+Alt+T para iniciar) e execute este comando *:

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

Em seguida, gere um novo executando uma atualização simples:

sudo apt-get update

Aqui está o relatório de erro (e outro) para este problema, que agora está corrigido, por isso não deve criar novos arquivos malformados, no entanto, se você já tiver os arquivos malformados, será necessário removê-los, conforme explicado nesta postagem.


* As opções usadas para rm são -v verbose

-v, --verbose                 explique o que está sendo feito

e -f força

-f, --force                 ignorar arquivos e argumentos inexistentes, nunca solicitar

Se você não tiver certeza sobre uma linha de comando ou sobre as opções que estão sendo usadas, consulte sempre página de manual para o comando. Estes podem ser acessados ​​na internet procurando por homem e o comando por exemplo homem rm ou você pode acessar as mesmas informações digitando exatamente o mesmo comando no terminal, por exemplo man rm instruções para sair da página será na parte inferior do terminal como este

picture of man page options


473
2018-03-13 16:53



Uma pessoa descobriu que ele tinha que fazer essas duas etapas várias vezes, mas isso funcionou eventualmente. - John S Gruber
É estranho colocar o -vfno final de rm comando. - Keith Thompson
Não resolveu o problema para mim. atualização ainda me mostra esse erro. - marines
Este é um problema recorrente. Isso continua acontecendo de vez em quando. Alguém está ciente da causa deste problema? - Rushil
Eu editei a resposta para entender a habilidade @jasser - Allan


Abra um Terminal e execute os seguintes comandos, um de cada vez:

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

Veja também:


80
2018-02-08 18:37



o que faz o -vf? - speedox
@speedox, de acordo com man rm, -v significa "verbose" e -f significa "força". Em outras palavras, remova todos os arquivos designados sem avisar e informe ao usuário o que está fazendo. - fouric
No meu caso, apenas fazendo o sudo apt-get update resolveu o problema. Eu acho que Allan mencionou versões mais recentes do apt corrigir isso automaticamente, então talvez tente apenas a atualização primeiro. - ThorSummoner


Você errou quando você editou /var/lib/dpkg/status. Restaure-o do backup que você fez antes de editá-lo. Claro, você fez um backup, certo?

Como você não fez um backup, edite-o novamente cuidadosamente. Tente não causar mais danos.

Você pode usar /var/lib/dpkg/status.old como ponto de referência. Este é um backup do status arquivo de antes da última vez dpkg foi executado. Corre

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

para ver as diferenças. Desfaça as alterações feitas manualmente e mantenha as alterações feitas até o último dpkg corre.

Se você realmente não conseguir reparar o arquivo, copie /var/lib/dpkg/status.old sobre /var/lib/dpkg/status. Você obterá um banco de dados de pacotes bem formado, mas desatualizado.

Você nunca precisa editar /var/lib/dpkg/status em operação normal. Mesmo quando as coisas vão a sério, /var/lib/dpkg/status não é algo que tende a exigir intervenção do administrador. Quaisquer que sejam seus problemas com crossplatformui foram, provavelmente há uma maneira melhor de resolvê-los. A única vez que precisei editar /var/lib/dpkg/status foi quando um a montante Packages arquivo foi quebrado.


23
2018-05-13 15:37



Eu também gostaria de saber a melhor maneira que você mencionou para remover crossplatformui se você poderia ajudar pq eu tentei de todas as maneiras possíveis para removê-lo e tentei encontrar muitas soluções, mas apenas o que eu mencionei trabalhou ... - Nirmik
@Nirmik Não tem ideia sobre crossplatformui. Pergunte isso como uma questão separada. Eu posso te dizer que em mais de uma década de uso dpkg, incluindo muitas fontes não oficiais, eu muito raramente precisei editar o status arquivo, e somente quando houve um repositório de terceiros quebrado. - Gilles
Ok ... Muito obrigado mais uma vez ... como você sugere eu vou postá-lo como uma nova pergunta :) também como você parece um usuário muito avançado, eu gostaria de perguntar se você sabe alguma coisa sobre como fazer não funcionar HOT -KTEYS funciona? (minha tecla sem fio funciona) - Nirmik
Tentei colocar o antigo no lugar do novo, não fixou para mim. :-( - Stéphane Gourichon
re: {Você errou quando editou / var / lib / dpkg / status} como para mim - não, eu não sou, eu não toquei neste arquivo :) No entanto, esta é apenas uma solução que resolve o problema na minha caso. Obrigado. - ruslo


eu fiz

sudo apt-get clean
sudo apt-get update

e funcionou.


18
2017-07-31 13:34



Não consertou para mim. :-( - Stéphane Gourichon


Siga as etapas de 2 a 5 no Procedimento de Solução de Problemas do Gerenciador de Pacotes geralmente resolve esse problema.

Para passo 2desabilitar todos seus PPAs. Você pode desmarcar todos eles em Fontes de Software da mesma maneira que desmarca apenas um; Vejo Como desativar um determinado PPA?. Você pode reativá-los mais tarde.

Para etapa 3, feche todos os programas abertos que você puder. É provavelmente seguro manter seu navegador da Web aberto para que você tenha suas instruções na sua frente. Mas é particularmente importante garantir que todos os gerentes de pacotes não está correndo. Isso inclui o Centro de Software, o Atualizador de Software (Update Manager em versões mais antigas do Ubuntu), Synaptic e Gdebi. Também inclui utilitários de gerenciamento de pacotes de linha de comando, como apt-get, dpkge aptitude.

Note que se outros usuários estão logados ao mesmo tempo, eles devem fazer logoff se possível.

Para Passo 4, abra uma janela de terminal. Uma maneira de fazer isso que funciona, não importa o ambiente de área de trabalho que você usa, é pressionar Ctrl+Alt+T.

Para passo 5, execute estes comandos na janela do terminal:

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

Eu copiei esse textual de PackageManagementResolução de problemasProcedimento em 2 de março de 2014. Esses comandos evoluíram no passado e os comandos recomendados nesse artigo pode ser alterado ou expandido novamente no futuro. Então você pode querer trabalhar de passo 5 ai. (Esse artigo, criado / editado por "Colaboradores para a wiki de documentação do Ubuntu" - especialmente Mark Rijckenberg--é licenciado CC-BY-SA 3.0, o que permite a inclusão aqui com a devida atribuição.)

Alguns desses comandos tentam corrigir o problema (e também podem mostrar informações de diagnóstico); outras pessoas exibem informações valiosas sobre o problema que você pode incluir em sua pergunta ou, de outra forma, fornece a alguém que o ajuda. (Ou, dependendo de suas habilidades, pode ativar você para diagnosticar e resolver.)

Muitas vezes isso corrige, mas quando isso não acontece, muitas vezes dá informações suficientes para consertá-lo.

Você não precisa digitar manualmente esses comandos; você pode copiá-los e colá-los. Eu recomendo colar e executar cada um separadamente, no entanto. Isso deixa mais claro qual saída é de quais comandos.


16
2017-11-28 02:36



Copiei todo o bloco e colei em vez de executar um por um. Embora vários comandos neste são inúteis e alguns falharam, mas finalmente ajuda no meu caso - phuclv


Eu também vi este problema ocorrer quando você tem muitas fontes em seus repositórios.

Experimente a solução postada acima e / ou talvez isso, às vezes recomendado no launchpad:

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

Deixe-nos saber como você está.


11
2018-05-08 10:19



Obrigado! Isso não funcionou com o DSL sem o makedir também. - Doug


Eu estava correndo em um erro semelhante:

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.

Eu segui sugestões semelhantes para copiar status-old.

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

Todos os meus arquivos de status estavam em branco por algum motivo. Por sorte, descobri que há backups desses arquivos:

$ 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

Eu verifiquei o último backup ...

$ head /var/backups/dpkg.status.0

... mas ainda estava em branco. Então eu abri um mais velho ...

$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1

Desta vez houve conteúdo. Então eu copiei ...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Então apt-get update correu sem problemas.

O crédito vai para este post.


4
2018-04-11 22:43