Como corrijo um erro “Problema com o MergeList” ou “o arquivo de status não pôde ser analisado” ao tentar fazer uma atualização?

344

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 corrigir isso?

    
por Braiam 12.03.2011 / 18:13

8 respostas

473

Estes comandos do terminal devem resolver o seu problema:

Primeiro remova a Merge List abrindo um terminal (pressione 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 erros (e another ) para este problema, que agora está corrigido para que não crie novos arquivos malformados, no entanto, se você já tenha os arquivos malformados que você precisa para removê-los, conforme explicado neste post.

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

  

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

e -f force

  

-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 a página de manual para o comando. Estes podem ser acessados na internet procurando por man e o comando por exemplo man rm ou você pode acessar a mesma informação digitando exatamente o mesmo comando no terminal, por exemplo man rm instruções para sair da página estarão na parte inferior do terminal como este

    
por Allan 13.03.2011 / 17:53
80

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:

por tommyk 08.02.2011 / 19:37
23

Você errou quando 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 um ponto de referência. Este é um backup do arquivo status anterior à última vez que dpkg foi executado. Executar

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 pela última execução dpkg .

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

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

    
por Gilles 13.05.2012 / 17:37
18

eu fiz

sudo apt-get clean
sudo apt-get update

e funcionou.

    
por psychok7 31.07.2012 / 15:34
16

As etapas de 2 a 5 no Procedimento de solução de problemas do Gerenciador de Pacotes geralmente resolvem esse problema.

Para passo 2 , desative todos o seu PPAs. Você pode desmarcar todos eles em Fontes de Software da mesma maneira que desmarca apenas um; veja Como desabilitar um PPA em particular? . Você pode reativá-los mais tarde.

Para o passo 3 , feche todos os programas abertos que puder. É provavelmente seguro manter seu navegador da Web aberto para que você tenha suas instruções na sua frente. Mas é particularmente importante garantir que nenhum gerenciador de pacotes esteja não executando . 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 , dpkg e aptitude .

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

Para a etapa 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 o 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\n"; cat -n ""' _ '{}' \;

Eu copiei esse material textual de PackageManagementTroubleshoottingProcedure em 2 de março de 2014. Esses comandos evoluíram no passado e os comandos recomendados em esse artigo pode ser alterado ou expandido novamente no futuro . Então você pode querer trabalhar a partir da etapa 5 lá . (Esse artigo, criado / editado por "Colaboradores para a wiki de documentação do Ubuntu" - especialmente Mark Rijckenberg --éo licenciado CC-BY-SA 3.0 , 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 permitir que você diagnostique e resolva isso.)

Muitas vezes isso corrige, mas quando isso não acontece, muitas vezes fornece informações suficientes para corrigi-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 é a saída de quais comandos.

    
por Eliah Kagan 28.11.2011 / 03:36
11

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

Experimente a solução publicada acima e / ou também 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ê se sai.

    
por andybleaden 08.05.2011 / 12:19
4

Eu estava com 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 backup mais recente ...

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

... mas ainda estava em branco. Então eu descompactei 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

Em seguida, apt-get update foi executado sem problemas.

O crédito vai para este post.

    
por Andrew 12.04.2014 / 00:43
3

Eu tive o mesmo problema e tentei todas as soluções de problemas mencionadas em outras respostas. Estranhamente, a única solução foi um passo diferente:

  • Vá para Software e amp; atualizações - & gt; Software Ubuntu - & gt; Download de - & gt; Outro & gt; Selecione o melhor servidor

  • Aguarde os testes. No final dos testes, o melhor servidor será selecionado, não necessariamente o mais próximo, nem o servidor principal nem o servidor da sua localidade.

  • Agora recarregue os dados do Repo, ele será concluído corretamente.

por Muhammad Annaqeeb 11.11.2015 / 05:12