“E: Subprocesso / usr / bin / dpkg retornou um código de erro (1)” O que isso significa?

30

Eu vi esta mensagem várias vezes sempre que alguém tem um problema ao instalar, atualizar ou remover algum software, mas eu me pergunto, o que isso significa e, mais importante, é possível resolver isso?

(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 acima é apenas um exemplo, não o meu problema real)

    
por Braiam 27.06.2014 / 23:32

1 resposta

30

Essa mensagem é genérica. Significa apenas que a instância dpkg chamada por apt / apt-get falhou por algum motivo. Não explica por que, como, ou dá dicas de como resolvê-lo. Como mensagem de diagnóstico, não é útil.

Você precisa ler as linhas antes da mensagem (às vezes um bom número delas) para encontrar o erro real que impede que você conclua a instalação.

Sim, mas como resolvo isso?

Não há uma maneira única de resolvê-lo. Existem 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 exclusiva desse pacote / ambiente.

Mas há redenção. O fato de você ver essa mensagem significa que provavelmente há mais informações 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 qual pacote tem problemas. É útil, mas não o suficiente.
  • subprocess installed post-installation script returned error exit status 100 : isso me diz que o script que falhou foi o postinst , o executado na pós-instalação. Isto será útil em algumas situações, mas não nesta.
  • dpkg: error while cleaning up: nada ú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 Debian, falhou. Ele falhou porque não conseguiu encontrar o script /etc/init.d/mongodb . Isto é mau. Precisamos criá-lo ou copiá-lo de outro lugar para que ele comece a funcionar novamente. Reinstalar o pacote também é normalmente uma opção para erros file not found .

    Nesse caso, não é necessário reportar um bug porque é provável que tenhamos sido nós quem removeu o script, mas se você tiver certeza absoluta de que não tocou no arquivo (um debsums -sla deve confirmá-lo), em seguida, denuncie 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... em que "pacote1 pacote2 ..." inclui todos os pacotes com problemas.

    
por 27.06.2014 / 23:32

Tags