Eu já vi essa mensagem várias vezes sempre que alguém tem um problema ao instalar, atualizar ou remover algum software, mas me pergunto: o que isso significa e, mais importante, é possível resolvê-lo?
(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)
(o exemplo acima é apenas um exemplo, não é meu problema real)
apt-get install (something)
e recebeu essa mensagem de erro como eu, a solução para mim foiapt-get upgrade (something)
.Respostas:
Essa mensagem é genérica. Significa apenas que a
dpkg
instância chamada porapt
/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:
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 opostinst
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 queinvoke-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 parafile 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
esudo apt-get check
, e a saída deapt-cache policy package1 package2...
onde "pacote1 pacote2 ..." inclui todos os pacotes com problemas.fonte
Errors were encountered while processing: mongodb-10gen
? Como é, para resolver o problema, essa linha é inútil .sudo touch /etc/init.d/mongodb
e executesudo apt-get purge mongodb-10gen
para corrigir o problema. Eu testei isso e enquanto o arquivo existir (/etc/init.d/mongodb) o dpkg continuará mesmo se o arquivo estiver vazio, e é isso que o touch faz (cria um arquivo vazio).