Essa mensagem é genérica. Significa apenas que a dpkg
instância chamada por apt
/ apt-get
falhou por algum motivo. Não explica por que, como ou dá dicas de como resolvê-lo. Como uma mensagem de diagnóstico, não é útil.
Você precisa ler as linhas antes da mensagem (às vezes várias) para encontrar o erro real que impede você de concluir a instalação.
Sim, mas como eu resolvo isso?
Não existe uma maneira única de resolvê-lo. Há tantas razões pelas quais isso pode acontecer que é inútil tentar listá-las todas em um único post. Toda e qualquer circunstância é quase única para esse pacote / ambiente.
Mas há redenção. O fato de você ver esta mensagem significa que provavelmente há informações mais relevantes nas linhas antes da mensagem. Para fins ilustrativos, usarei um exemplo:
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
Agora, para encontrar o problema, você precisa ler para trás:
E: Sub-process /usr/bin/dpkg returned an error code (1)
não me diz nada de útil. Então, seguindo em frente.
Errors were encountered while processing: mongodb-10gen
apenas me diz que pacote tem problemas. É útil, mas não suficiente.
subprocess installed post-installation script returned error exit status 100
: isso me diz que o script que falhou foi o postinst
executado na pós-instalação. Isso será útil em algumas situações, mas não nesta.
dpkg: error while cleaning up:
nada de útil aqui.
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
BINGO! Isso nos diz que invoke-rc.d
, um binário que controla o script init na maioria dos sistemas semelhantes ao Debian, falhou. Falhou porque não conseguiu encontrar o /etc/init.d/mongodb
script. Isto é mau. Precisamos criá-lo ou copiá-lo de outro lugar para que ele volte a funcionar. Reinstalar o pacote também é normalmente uma opção para file not found
erros.
Nesse caso, não é necessário relatar um bug, porque é provável que fomos nós que removemos o script, mas se você tiver certeza absoluta de que não tocou no arquivo (a debsums -sla
deve confirmar), relate um bug.
Então, o que exatamente você precisa para obter ajuda? Idealmente, a saída completa do problema. Também é útil incluir a saída de sudo dpkg -C
e sudo apt-get check
, e a saída de apt-cache policy package1 package2...
onde "pacote1 pacote2 ..." inclui todos os pacotes com problemas.
apt-get install (something)
e recebeu essa mensagem de erro como eu, a solução para mim foiapt-get upgrade (something)
.